我正在尝试将2个模型传递给视图,但它似乎无法正常工作。以下是我的示例:http://jsfiddle.net/kahhor/jp4B6/14/正如您所看到的,第二个警报显示未定义...
可能是我有错误的做法。我要做的是:在View1
绑定事件'change'
到Model1
... ...通过点击View2
中的按钮,调用Model1
中的函数它会更改值,并自动呈现View1
,因为它被绑定以更改事件。
但请不要忘记,View2
也有自己的Model2
,我在视图之外创建了new View2({model:Model2});
,而不是像{{1}}那样传递它。
起初可能看起来很混乱,但我认为骨干可以做到这一点很简单。我只是不知道该怎么做:)
谢谢,
答案 0 :(得分:23)
您可以从
访问自定义参数(选项)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
答案 1 :(得分:5)
我刚刚通过Google发现了这个问题和Sled的答案,这对我帮助很大 - 但只是为了更新这个2岁的问题并且可能会让其他一些Google员工感到头疼:
Backbone Views不再自动附加传递给的选项 构造函数为this.options,但如果您愿意,可以自己动手。
Vitaliy's Answer on a similar question向您展示:
initialize : function (options) {
this.options = options || {};
}
答案 2 :(得分:2)
添加此修补程序并直接将任何选项传递给查看。
Backbone.View.prototype._configureWithoutThis = Backbone.View.prototype._configure;
Backbone.View.prototype._configure = function(options) {
this._configureWithoutThis(options);
_.extend(this, this.options);
}