2013-06-19 48 views
5

我目前使用的是Backbone forms带有嵌套模型和自定义模板的主干窗体

我目前有一个使用嵌套模型加载得很好的模式。当我尝试使用模板进行设计时,我没有得到预期的结果。

模板是类似于以下:

<div class="bounding"> 
    <h2>Title1 </h2> 
     <div data-fields="name,type"></div> 
     <div data-fields="bedrooms"></div> 
    </div> 
    <div class="bounding"> 
     <h2>Title 2</h2> 
     <div data-fields="description"></div> 
    </div> 

卧室在模式中定义为:

bedrooms: { 
    type: 'NestedModel', 
    model:Bedroom, 
    editorAttrs: { 
    class: 'bedrooms' 
    } 
} 

此正确地显示而不正在由这称为自定义模板:

template: _.template($('#formTemplate').html()) 

和自定义模板在删除此行时看起来正确

<div data-fields="bedrooms"></div> 

有没有一种方法可以同时使用自定义模板和嵌套模型?嵌套模型没有定义模板,只添加了模式。

感谢

更新:Js Fiddle连接等等

// template: _.template($('#formTemplate').html()), 

应切换到看到一个工作方式,它不是在寻找正确的

UPDATE:

托米Komulainen非常接近与他的回答Here,说明实际上是在第一个边界div,而不是第二。我怎样才能把它移到第二个?

更新2:

林调用目前呈现每个嵌套的项目,并在之后的主要呈现这样

form.fields.bedrooms.render(); 
$('#bedrooms').html(form.fields.bedrooms.el); 

目前这个工作,但犯规觉得自己是一个“好”的解决方案注入回

+0

Update2中的解决方案可能不会觉得'好',但是如果没有使用像Marionette这样的好框架,这些就是我们有时需要做的事情。 – damienc88

回答

2

尝试在整个模板中添加包装DIV标签;模板需要有一个主要的包含元素。

+0

已经有了。病让它更可见,但有一个边界din – exussum

+0

它不是一个div,它是一个

将重要吗? – exussum

+0

这应该是好的。你能设置一个jsfiddle示例来显示你遇到的问题吗? – evilcelery

1

我认为<div data-fields="bedrooms"></div>应该

<div data-fieldsets="bedrooms"></div> 

代替。

+0

试过 - 看起来在一切 – exussum

+0

[更新jsfiddle](http://jsfiddle.net/TvFxt/3/)看起来合理的我。我错过了什么吗? –

+0

http://jsfiddle.net/TvFxt/2/是我做的更新 - 有什么区别?你的外观确定 - 但我不明白它们的区别? – exussum