Backbone.js - 通过构造函数传递参数

时间:2011-12-11 11:21:01

标签: javascript backbone.js

情境:
当我(尝试)通过构造函数设置alert()变量时,我得undefinedmyVar。但是,如果我取消注释生活在myView中的myVar,那么警报就会改为“内部的Hello”,正如人们所期望的那样。

问题:
这是否意味着我无法在视图的构造函数中设置任何参数,除了主干拥有参数,例如modelcollectionelid,{{1} }& className
手动:http://documentcloud.github.com/backbone/#View-constructor

代码:

tagName

2 个答案:

答案 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
});