Представление коллекции марионеток не обновляется при добавлении модели

Я новичок в Марионетт. Так что может быть его довольно простой.

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

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