Изгледът на колекция Marionette не се актуализира при добавяне на модел

Нов съм в Marionette. Така че може да е доста основно.

Имам колекция, инициализирана глобално и е празна по време на създаването.

App.Colors= Backbone.Collection.extend({
    model : App.Color,
    comparator : "price"    
});


var appColors = new App.Colors();

Ако създам изглед на колекция Marionette с тази празна колекция.

var colorview= new App.ColorView({collection:appColors});

и по-късно добавете към колекцията appColors.

appColors.add({code:'red'})

Изгледът не трябва ли да се актуализира автоматично, тъй като слуша collection.add. Знам, че ще работи добре, ако напиша:

colorview.collection.add({code:'red'})

person user3084985    schedule 21.02.2014    source източник
comment
Как изглежда вашият CollectionView? Ако го подадете като непразна колекция, тези модели ще бъдат ли изобразени според очакванията?   -  person max    schedule 21.02.2014
comment
да, те се изобразяват.   -  person user3084985    schedule 21.02.2014


Отговори (1)


За да работи, трябва да обвържете изобразяването на изглед към събитието за добавяне на колекция, така че основно във вашата декларация на изглед трябва да имате нещо подобно:

App.ColorView = Backbone.View.extend({
    initialize: function() {
        this.listenTo(this.collection, 'add', this.render);
        ...
    }
    ...
});
person Rida BENHAMMANE    schedule 21.02.2014
comment
CollectionView в Marionette вече добавя това за вас. Както и да е, това беше едно от първите неща, които опитах. Не работи :( - person user3084985; 21.02.2014
comment
Тествахте ли colorview.collection.add({code:'red'})? I know it will work fine не е твърдение, на което компютърният учен разчита :) - person Rida BENHAMMANE; 21.02.2014
comment
Да, разбира се, че съм опитвал това. Знаех, че ще получа предложения да опитам това, така че исках да кажа това, което е очевидно. :) Но това не е начина, по който искам да актуализирам изгледа. Модулът е доста сложен, посочих проблема в прост код. Данните се актуализират в различен модул, но изгледът се изобразява отделно въз основа на много изчисления. - person user3084985; 21.02.2014
comment
Сигурни ли сте, че когато извикате appColors.add({code:'red'}), appColors и colorview.collection сочат към един и същ обект? - person Rida BENHAMMANE; 21.02.2014