Backbone.js 1.1.0的更改日志声明:
Backbone Views不再自动附加传递给构造函数的选项作为this.options,但如果您愿意,可以自己执行。
我的问题是我现在该怎么办?之前,我的观点中定期this.var = this.options.var
。
答案 0 :(得分:68)
如果您想访问传递的选项 - 只需保存它们:
initialize: function (options) {
this.options = options || {};
}
如果您使用ES6:
initialize (options = {}) {
this.options = options;
}
如果您要为所有Backbone.View
保存已通过的选项,则可以覆盖{strong> ncksllvn suggested below等constructor
。
答案 1 :(得分:33)
我的团队已经投入了在某些情况下使用this.options
,我不想为Backbone.View的每个子类修改initialize
方法。加载Backbone后,我们覆盖Backbone.View constructor
,类似于McGarnagle的答案,但是无缝集成:
// Compatibility override - Backbone 1.1 got rid of the 'options' binding
// automatically to views in the constructor - we need to keep that.
Backbone.View = (function(View) {
return View.extend({
constructor: function(options) {
this.options = options || {};
View.apply(this, arguments);
}
});
})(Backbone.View);
答案 2 :(得分:0)
另外值得一看backbone.viewOptions,以获得支持白名单和默认值的视图选项的极简主义实现。