10

是否可以在backbone.js 视图中使用全局变量?

示例:

var TodoView = Backbone.View.extend({

 counter: null ; // is this possible ?

 initialize: function(){ 

 this.render();

 },

 render: function(){



}


});
4

3 回答 3

23

您可以轻松地将变量存储在至少 3 个不同的范围内:

  • 每个视图实例唯一的常规实例变量
    • 这些可以存储为视图this对象的属性
    • 例子:this.selectedItem = this.$el.find('.selected');
  • 视图的所有实例共享的类级变量
    • 这些可以存储在 View 类的构造函数中
    • 示例:(TodoView.counter = 0;将其放在整个.extend调用之后)
  • 真正的全局变量(是的,这些很糟糕,但既然你问了)
    • 您可以通过省略var或仅显式分配给window对象来泄漏这些
    • 例子:window.appLaunchTime = new Date()
于 2012-11-30T15:16:36.063 回答
4

除了 Peter 已经说过的内容之外,如果您有兴趣拥有一个可在TodoView您创建的所有实例中使用的私有变量,那么您可以执行以下操作。

(function () {
  var counter = 0; //This can be used now as a private variable inside TodoView

  window.TodoView = Backbone.View.extend({

    initialize: function(){ 
      this.render();
      counter += 1;
    },

    render: function(){
    }
  });
})();
于 2012-11-30T17:53:52.973 回答
0

尝试将其放在静态范围内

var TodoView = Backbone.View.extend({
TodoView.counter++//reference it this way
},{
 counter: null ;})

可能有点像全局变量

于 2013-07-24T10:21:39.563 回答