Backbone.js нормально ли вызывать метод для представления в обработчике добавления коллекции? - PullRequest
2 голосов
/ 13 декабря 2011

У меня есть коллекция в магистрали ... в методе инициализации, который я делаю это ... Я хочу изменить представление, когда к этой коллекции добавлен элемент.

initialize: function (models, options) {

        this.bind('add', function () {
            NS.discussionView.reRender();
        });
    }

Это решение отлично работает, однако mycoworker говорит, что я полностью иду против того, для чего была разработана магистраль.Есть ли лучший подход для этого или это хорошая практика?Вопросы немного субъективны, на самом деле я хочу знать, как правильно делать что-то подобное.Спасибо за любой отзыв или совет.

Ответ на ответ ... Ну, объектная модель глубже.В разделе DiscussionView имеется модель Discussion, у которой есть свойство themes, представляющее собой базовую коллекцию моделей тем.Каждая тема имеет коллекцию ответов моделей ответа.Когда к теме добавляется ответ, мне нужно снова сделать просмотр обсуждения.Как правильно настроить эту цепочку?

1 Ответ

3 голосов
/ 13 декабря 2011

Просто измените зависимость: представление может и должно зависеть от модели, но не наоборот. Таким образом, одна модель может использоваться несколькими видами (простым, подробным и т. Д.), И вы можете добавлять виды без изменения модели.

model.bind('add', function () {
    this.render();
});

Также предпочитайте, чтобы render() имя метода соответствовало соглашению об именах Backbone.js.

...