【发布时间】:2013-04-18 17:40:22
【问题描述】:
我正在使用复合视图来显示带有 Backbone Marionette 的表格,但是在我对模型进行提取后,当数据进入时,我无法让模板的包装部分重新呈现。这是我的模板:
复合视图的模板:
<thead>
<tr>
{{#each report.columns}}
<th>{{name}}</th>
{{/each}}
</tr>
</thead>
<tbody></tbody>
还有ItemView的模板:
{{#each cols}} <td>{{value}}</td> {{/each}}
在我的控制器函数中,我正在创建模型的实例,创建并显示视图,并进行获取以将我的数据放入模型中:
var tView = new tableCompositeView({collection: rowsCollection, model: configModel});
layoutView.tablecontent.show(tView);
rowsCollection.fetch();
configModel.fetch();
collection items 进来很好,获取成功后视图会更新。但是,当 configModel.fetch() 完成时,复合视图模板中的包装位永远不会更新。
在文档中,它说您可以使用 .renderModel() 仅重新渲染视图中处理模型的部分。当我这样做时:
configModel.fetch().success(function(){ tView.renderModel(); });
没有任何变化。但是当我使用 .render() 时:
configModel.fetch().success(function(){ tView.render(); });
它工作正常并得到更新。这暂时可行,但它正在重新渲染我的整个表格,这可能是一种性能问题
【问题讨论】:
-
“可能是性能问题”。如果它成为性能问题,为什么不担心呢?