2012-02-23 89 views
5

所以,第一個問題我找不到答案。可能是有理由問我自己的第一個問題。道歉,如果答案可以在backbone.js的範圍之外找到。在backbone.js中使用全局變量

在backbone.js應用程序中,我需要訪問不同函數中的幾個變量,所以我必須使用一些全局變量設置。

我想知道如果我目前的解決方案是可以接受的/良好的做法。我的IDE(IDEA),似乎想是不是:

var MyModel = Backbone.Model.extend({ 

initialize:function(){ 
    var myGlobalVar, myOtherGlobalVar;//marked as unused local variable 
}, 

myFunction:function() {   
     myGlobalVar = value;//marked as implicitly declared 
     model.set({"mrJson": {"email": myGlobalVar}}); 
     model.save(); 
    }); 
    } 
}, 

myOtherFunction:function() {   
     myOtherGlobalVar = otherValue;//marked as implicitly declared 
     model.set({"mrJson": {"email": myGlobalVar, "other": myOtherGlobalVar}}); 
     model.save(); 
    }); 
    } 
} 
} 

我想聲明隱式聲明的全局變量,但導致他們不是從行吟詩人功能來訪問。

有沒有一種正確的方法來處理backbone.js中的這些全局變量?

回答

14

目前您聲明變量的方式,它們在功能初始化範圍,而不是那麼物體爲MyModel範圍。要將變量定義爲模型變量(對所有對象功能都可訪問),請執行以下操作:

var MyModel = Backbone.Model.extend({ 

myGlobalVar: null, 
myOtherGlobalVar: null, 

initialize:function(){ 
    console.log(this.myGlobalVar) 
}, 
... 
+0

謝謝!這是我尋找的語法。 – Sephie 2012-02-23 11:34:13

+0

我面臨類似的情況,雖然上面的解決方案似乎沒問題,但我的問題必須更多地瞭解js解析器是如何工作的,而不是骨幹的工作方式。我做了一個jsbin非功能性代碼示例(使其功能的代碼將成爲compicated)。這裏是鏈接http://jsbin.com/tufeh/1/當dropfrom被稱爲selestrt獲取一個值(這是一個unix時間戳)...當changefrom被調用(更改事件)雖然selestrt未定義。在這種情況下我能做些什麼?我希望你能得到照片... – 2014-07-14 14:29:30