35

Backbone.js 1.1.0 的变更日志指出:

Backbone Views 不再自动附加作为 this.options 传递给构造函数的选项,但如果您愿意,您可以自己做。

我的问题是我现在该怎么做?以前,我this.var = this.options.var经常在我的看法。

4

3 回答 3

68

如果您想访问传递的选项 - 只需保存它们:

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

如果你使用 ES6:

initialize (options = {}) {
  this.options = options;
}

如果你想保存所有传递Backbone.View的选项,你可以constructor像下面建议的ncksllvn 那样覆盖。

于 2013-10-11T19:11:31.177 回答
34

我的团队已经this.options在某些情况下投入使用,我不想为initializeBackbone.View 的每个子类都修改和修改方法。加载 Backbone 后,我们会覆盖与constructorMcGarnagle 的答案类似的 Backbone.View,但可以无缝集成:

// 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);
于 2013-10-17T15:55:58.890 回答
0

Also worth taking a look a backbone.viewOptions for a minimalist implementation of view options that supports white listing and default values.

于 2015-04-08T01:54:33.673 回答