gpt4 book ai didi

javascript - Marionette Collection View,获取集合不会触发事件

转载 作者:搜寻专家 更新时间:2023-11-01 04:32:45 37 4
gpt4 key购买 nike

我遇到了一个问题:我的 CollectionView 没有呈现我的 ItemViews。我将一个集合从布局传递到 Collection View 。我正在获取 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);

在 Collection View 中:

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

});

});

在项目 View 中:

define([
'marionette',
'templates',
'models/Article'
],
function (Marionette, templates, Article) {

return Marionette.ItemView.extend({

initialize : function () {
console.log('itemviewrender');
},

template : templates.projectDashboard.articleItem
});

});

一般来说,设置是有效的。我找到了一种实现此功能的方法:获取布局中的集合并在成功回调的区域中显示 CollectionView

但是在集合的 collectionView 上添加监听器失败了。像

这样的命令式和声明式监听器不会触发任何事件
this.collection.on('reset', this.render, this);

collectionEvents : {
'reset' : 'render'
}

如果集合被获取,我只是想用它的项目 View 重新呈现 Collection View 。我确定我错过了什么。感谢您的帮助!

更新:我发现了一些有趣的东西:我已经说过,如果我在布局中获取集合并在成功回调中创建 collectionView,它就可以工作。有趣的是:如果我通过获取的集合,听众也会工作。我通过再次调用 initialize 中的 this.collection.fetch() 来触发它们。然后重新渲染工作。它必须围绕布局中的集合传递。

最佳答案

你想使用collectionEvents

这是 Marionette 文档中的示例

 Marionette.CollectionView.extend({
collectionEvents: {
"sync": "render"
}
});

在示例中,当从后端完全填充集合时将触发渲染

modelEvents and collectionEvents

关于javascript - Marionette Collection View,获取集合不会触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15157669/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com