情境:
当我(尝试)通过构造函数设置alert()
变量时,我得undefined
说myVar
。但是,如果我取消注释生活在myView中的myVar
,那么警报就会改为“内部的Hello”,正如人们所期望的那样。
问题:
这是否意味着我无法在视图的构造函数中设置任何参数,除了主干拥有参数,例如model
,collection
,el
,id
,{{1} }& className
?
手动:http://documentcloud.github.com/backbone/#View-constructor
代码:
tagName
答案 0 :(得分:57)
传递给构造函数的选项会自动存储为this.options
var myView = Backbone.View.extend({
myVar : 'Hello from inside',
initialize: function() {
alert(this.options.myVar);
}
)};
new myView({myVar: 'Hello from outside'});
答案 1 :(得分:27)
从主干1.1.0开始,options
参数自动no longer attached到视图(请参阅issue 2458进行讨论)。您现在需要手动附加每个视图的选项:
MyView = Backbone.View.extend({
initialize: function(options) {
_.extend(this, _.pick(options, "myVar", ...));
// options.myVar is now at this.myVar
}
});
new MyView({
myVar: "Hello from outside"
...
});
或者,您可以使用this mini plugin自动附加白名单选项,如下所示:
MyView = BaseView.extend({
options : ["myVar", ...] // options.myVar will be copied to this.myVar on initialize
});