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

时间:2012-11-30 14:34:58

标签: backbone.js

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

exmpl:

var TodoView = Backbone.View.extend({

 counter: null ; // is this possible ?

 initialize: function(){ 

 this.render();

 },

 render: function(){



}


});

3 个答案:

答案 0 :(得分:22)

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

  • 每个视图实例唯一的常规实例变量
    • 这些可以作为属性存储在视图的this对象
    • 示例:this.selectedItem = this.$el.find('.selected');
  • 视图的所有实例共享的类级变量
    • 这些可以存储在View类的构造函数
    • 示例:TodoView.counter = 0;(在整个.extend调用之后放置
  • 真正的全局变量(是的,这些都很糟糕,但是因为你问过)
    • 您可以省略var或只是明确指定window对象
    • 来泄露这些内容
    • 示例:window.appLaunchTime = new Date()

答案 1 :(得分:3)

除了彼得已经说过的内容之外,如果您有兴趣拥有在您创建的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(){
    }
  });
})();

答案 2 :(得分:0)

尝试将其置于静态范围

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

可能有点像全局变量