Визуализация формы из представления в шаблоне
Я оцениваю 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>
,