Подтвердить что ты не робот

Backbone.js - передача 2 моделей в 1 вид

Я пытаюсь передать 2 модели в представление, но, похоже, он не работает. Вот мой пример: http://jsfiddle.net/kahhor/jp4B6/14/ Как вы видите, второе предупреждение показывает undefined...

Может быть, у меня неправильный подход. То, что я пытаюсь сделать, это: View1 связать событие 'change' с Model1... Затем, нажав кнопку в View2, вызовите функцию в Model1, которая изменяет значение, и автоматически выводит View1, поскольку он был привязан для изменения события.

Но не забывайте, что View2 имеет также свой собственный Model2, который я создал вне представления, и передал его как new View2({model:Model2});.

Сначала это выглядело сбивающим с толку, но я думаю, что это просто, что может сделать позвоночник. Я просто не знаю, как это сделать:)

Спасибо,

4b9b3361

Ответ 1

вы можете получить доступ к настраиваемым параметрам (опциям) из

window.PopupView = new PopupView({ model: LeftNotificationM, model2: PopupM});

вот так:

window.PopupView = Backbone.View.extend({

    // code left out

    initialize: function () {
        this.model.bind('change:notification_num', this.render);
        alert(this.model);
        // your model2 option:
        alert(this.options.model2);
    },

   // code left out
});

Заключение: "непризнанные параметры" представления можно найти в this.options

Ответ 2

Я только что нашел этот вопрос, а Sled ответил через Google, и это очень помогло мне, но просто чтобы обновить этот 2-летний вопрос и, возможно, спасти некоторых других роботов от головной боли:

Магистральные виды больше не присоединяют параметры, переданные в конструктор как this.options, но вы можете сделать это самостоятельно, если хотите.

Виталий Отвечать на аналогичный вопрос показывает вам, как:

initialize : function (options) {
  this.options = options || {};
}

Ответ 3

Добавьте этот патч и передайте любые параметры, чтобы просмотреть.

    Backbone.View.prototype._configureWithoutThis = Backbone.View.prototype._configure;
    Backbone.View.prototype._configure = function(options) {
      this._configureWithoutThis(options);
      _.extend(this, this.options);
    }