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 に答える