Визуализация формы из представления в шаблоне

Я оцениваю backbone.js, backbone-forms и Rails, и у меня есть некоторые проблемы...

У меня есть представление, где я создаю новую модель и форму, и я хочу отобразить эту форму с другими элементами HTML, поэтому я использую шаблон.

expedients_new.js.coffee
------------------------

class Globalbackbone.Views.ExpedientsNew extends Backbone.View

template: JST['expedients/new']

render: ->

@form = new Backbone.Form({
    model: @model
}).render();

console.log(@model.procedencia) 
console.log(@form) 
$(@el).html(@template(expedient: @model, form: @form ))
this

В этом представлении используется шаблон, и в этом шаблоне я хочу отобразить форму там, но я не знаю, как это сделать...

new.jst.eco
-----------

<h1>BackBones with GlobalWeb</h1>

<h2>Adding New Expedient</h2>

<%=@expedient.date%>
<hr>
<%=@form.el%>
<hr>
<%=@form%>

Заранее спасибо,

С уважением

РЕДАКТИРОВАТЬ

Текущий вывод браузера, где я ожидаю форму: [object HTMLFormElement]

1 ответ

Решение

Инструкции по использованию указывают, что @form будет вид Backbone:

var form = new Backbone.Form({
    model: user
}).render();

а это значит что @form.el будет DOM-элементом, который нужно вставить в DOM:

$('body').append(form.el);

И если вы посмотрите на источник, вы увидите, что Backbone.Form это Backbone.View подкласс:

var Form = (function() {
  return Backbone.View.extend({
    //...

Ваш код пытается лечить @form как если бы это была строка, содержащая HTML:

<%=@form%>

так что вы получите стандартную строковую версию элемента DOM: [object HTMLFormElement],

Я думаю, вам повезет больше, если у вас будет что-то похожее на это:

@$el.append(@template(expedient: @model))
@$el.append(@form.el)

и в вашем шаблоне:

<h1>BackBones with GlobalWeb</h1>

<h2>Adding New Expedient</h2>

<%=@expedient.date%>
<hr>

Тогда ваша форма должна появиться после <hr>,

Другие вопросы по тегам