【问题标题】:Backbone forms with nested models and custom template具有嵌套模型和自定义模板的主干表单
【发布时间】:2013-06-19 16:48:26
【问题描述】:

我目前正在使用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'
  }
}

这在没有被 this 调用的自定义模板的情况下正确显示:

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

删除此行后自定义模板看起来正确

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

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

谢谢

更新:Js Fiddle 附上点赞

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

应该切换以查看工作方式,但它看起来不正确

更新:

Tommi Komulainen 非常接近他的答案 Here ,但描述实际上是在第一个边界 div 中,而不是第二个。我怎样才能把它移到第二个?

更新 2:

我当前调用每个嵌套项的渲染,并在主渲染之后注入,像这样

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

这目前正在工作,但感觉不是一个“好”的解决方案

【问题讨论】:

  • Update2 中的解决方案可能感觉不太“好”,但如果不使用像 Marionette 这样好的框架,这些就是我们有时不得不与骨干网做的事情。

标签: javascript backbone.js underscore.js backbone-forms


【解决方案1】:

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

【讨论】:

  • 已经有了。生病让它更明显,但有一个边界 din
  • 它不是一个 div,它是一个
    重要吗?
  • 应该没问题。您可以设置一个 jsfiddle 示例来显示您遇到的问题吗?
  • 使用 jsfiddle 示例更新原件
  • 最好的方法可能是为模式的卧室部分制作自定义编辑器。请参阅有关制作自定义编辑器的文档。
【解决方案2】:

我认为&lt;div data-fields="bedrooms"&gt;&lt;/div&gt;应该是

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

改为。

【讨论】:

  • Updated jsfiddle 在我看来是合理的。我错过了什么吗?
  • jsfiddle.net/TvFxt/2 是我所做的更新 - 有什么不同?你的看起来不错 - 但我不明白其中的区别?
  • 我还对其他数据字段进行了编辑,以消除您提到的重复。副本已经在原始模板中,并且字段集编辑为卧室子模型修复了它,我认为这是问题的根源。我想你可以找出给定方向的其他字段,所以我最初没有看它们,对此感到抱歉。
  • 太近了。您的示例删除了另一个 H2 以将表单拆分为多个部分。所以所有的例子都在第一个边界框中。我怎样才能阻止它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 2013-05-04
  • 1970-01-01
相关资源
最近更新 更多