У меня проблема: мой 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);
В представлении коллекции:
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
});
});
В элементе просмотра:
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);
or
collectionEvents : {
'reset' : 'render'
}
Я просто хочу перерисовать коллекцию View с ее элементами Views, если коллекция выбрана. Я уверен, что я что-то пропустил. Любая помощь приветствуется!
ОБНОВЛЕНИЕ: я нашел кое-что интересное: я уже сказал, что если я извлеку коллекцию в макете и создам collectionView при успешном обратном вызове, это сработает. Интересно: слушатели тоже работают, если я передаю выбранную коллекцию. Я запускаю их, снова вызывая this.collection.fetch()
в initialize
. Тогда перерисовка работает. Это должно быть что-то вокруг прохода коллекции из макета.
CollectionView
? Также попробуйте использоватьlistenTo
вместоon
- person neebz   schedule 01.03.2013itemview
в объявленииCollectionView
, которое было изменено наchildView
в версии 2.x Marionette. - person Vahan Vardanyan   schedule 13.10.2014