pfr*_*ied 5 javascript collections view backbone.js marionette
我有一个问题:我CollectionView没有渲染我的ItemViews.我将一个集合从布局传递到集合视图.我正在收集以下内容CollectionView:
在布局中:
// Create a a collection for the view
this.articles = new Articles(null, {
organizationId : this.model.organizationId,
projectId : this.model.id
});
var articlesView = new ArticleCollectionView({ collection : this.articles});
this.articlesRegion.show(articlesView);
Run Code Online (Sandbox Code Playgroud)
在CollectionView中:
define([
'marionette',
'templates',
'i18n!nls/projectDashboard',
'views/projectDashboard/ArticleItem'
], function (Marionette, templates, msg, ArticleItemView) {
return Marionette.CollectionView.extend({
initialize : function () {
this.listenTo(this.collection, "reset", this.render);
this.collection.fetch();
},
itemView : ArticleItemView
});
});
Run Code Online (Sandbox Code Playgroud)
在ItemView中:
define([
'marionette',
'templates',
'models/Article'
],
function (Marionette, templates, Article) {
return Marionette.ItemView.extend({
initialize : function () {
console.log('itemviewrender');
},
template : templates.projectDashboard.articleItem
});
});
Run Code Online (Sandbox Code Playgroud)
一般情况下设置正常.我找到了一种方法来实现这一点:在布局中获取集合并CollectionView在成功回调中显示区域.
但是在collectionView上为集合添加侦听器失败了.没有任何事件会被强制性和声明性的听众所激发
this.collection.on('reset', this.render, this);
Run Code Online (Sandbox Code Playgroud)
要么
collectionEvents : {
'reset' : 'render'
}
Run Code Online (Sandbox Code Playgroud)
我只想重新呈现集合视图,如果已获取集合,则使用项目视图.我相信我错过了什么.任何帮助表示赞赏!
更新:我发现了一些有趣的东西:我已经说过如果我在布局中获取集合并在成功回调上创建collectionView它可以工作.有趣的是:如果我传递获取的集合,听众也会工作.我再次打电话this.collection.fetch()来触发它们initialize.然后重新渲染工作.它必须是布局中集合传递的内容.
您想使用集合事件
这是 Marionette 文档中的示例
Marionette.CollectionView.extend({
collectionEvents: {
"sync": "render"
}
});
Run Code Online (Sandbox Code Playgroud)
在示例中,当集合已从后端完全填充时,将触发渲染
| 归档时间: |
|
| 查看次数: |
7894 次 |
| 最近记录: |