Ember.js:View在呈现前两个项目后停止更新
Ember.js: View stops updating after rending the first two items
我有一个带有itemController(ListItem(的ArrayController(List(。我看到的问题是,渲染列表的模板在渲染前两个列表项后停止更新。
在下面的代码中,当ArrayController的视图插入DOM时,有两个setTimeout
调用。这些setTimeout
调用中的每一个都将连接到ArrayController,并向其中再添加两个列表项。第一个setTimeout运行良好:两个列表项目被添加到ArrayCntroller,模板显示这两个列表条目。但是,在第二个setTimeout之后,模板仍然只显示前两个列表项,而不是全部四个。此时,页面上只显示了两个列表项,但如果I console.log
是ArrayController上content
数组的长度,则会显示4
的正确长度。
模板:
<!-- List View -->
<script type="text/x-handlebars" data-template-name="list" id="list">
{{each controller itemViewClass="App.ListItemView"}}
</script>
<!-- Item View -->
<script type="text/x-handlebars" data-template-name="listitem" id="listitem">
<li>Testing: {{content.caption}}</li>
</script>
控制器:
App.ListController = Ember.ArrayController.extend({
itemController: 'list-item',
addItem: function (caption) {
this.pushObject(
App.ListItem.create({
caption: caption
})
);
}
});
App.ListItemController = Ember.Controller.extend({
});
视图:
App.ListView = Ember.View.extend({
templateName: 'list',
didInsertElement: function () {
setTimeout(function () {
this.get('controller').addItem('test1');
this.get('controller').addItem('test2');
}.bind(this), 1000);
setTimeout(function () {
this.get('controller').addItem('test3');
this.get('controller').addItem('test4');
}.bind(this), 2000);
}
});
App.ListItemView = Ember.View.extend({
tagName: '',
templateName: 'listitem',
});
型号:
App.ListItem = Ember.Object.extend({
caption: ''
});
现在,如果我像下面这样将无块each
辅助对象更改为常规的each辅助对象,那么这一切都可以正常工作。但我希望能够为每个项目的视图定义一个类。
<!-- List View -->
<script type="text/x-handlebars" data-template-name="list" id="list">
{{#each controller}}
<li>Testing: {{content.caption}}</li>
{{/each}}
</script>
如上所述,我最初没有为列表项模板分配标记。我给它分配了一个标签后,它就工作了。
我将项目模板更改为:
<!-- Item View -->
<script type="text/x-handlebars" data-template-name="listitem" id="listitem">
Testing: {{content.caption}}
</script>
并且项目视图为:
App.ListItemView = Ember.View.extend({
tagName: 'li',
templateName: 'listitem',
});
相关文章:
- 如何使用仅显示/查看两个项目的甘特图
- Javascript 库,一次包含两个项目
- 请问JavaScript中的两个项目有什么区别
- 下划线.js,从一个对象中获取两个项目并添加到顶部
- Javascript localStorage unshift 数组在两个项目后停止追加
- Maven结合了两个项目
- 缩放两个项目
- 在同一集合中添加两个项目
- 下拉|材料设计|两个项目|重叠
- select2.js-如何在选项元素内对齐两个项目
- 筛选和比较两个项目的列表
- 猫头鹰旋转木马,一次滚动两个项目
- 如何排序json与两个项目
- 当两个项目被选中时创建一个效果
- . net WebApp中的下拉列表-是否可以在列表中的一个或两个项目下划下划线?
- 在两个项目之间共享组件,同时保留热加载
- 在图像和标尺之间对齐两个项目
- jQuery类选择器-我可以瞄准两个项目
- Ember.js:View在呈现前两个项目后停止更新
- 一个容器中两个项目的延迟效应自动化