中有幾個錯誤你的方法。
第一個你正在定義一個全局變量分配給DOM窗口對象,這是一個函數,我不知道它在哪裏聲明。但在這個階段這並不重要。
第二個您希望通過調用上述函數來獲取分配給全局變量的值,該函數不返回任何內容。
這裏有幾個選擇:要麼將值賦給全局變量(這是一個非常糟糕的做法,這應該在任何情況下都應該避免)。
更好的方法是簡單地返回id
:
getGeoLevelDetails: function(id) {
return id;
}
稍後,您可以通過調用renderGeoLevelDetails
函數來獲取此ID。
renderGeoLevelDetails: function(response, obj) {
var id = this.getGeoLevelDetails();
}
請注意,這只是工作,如果你調用來自同一範圍this.getGeoLevelDetails
功能,因爲this
是同一個對象的實例。
有關於這行代碼中的另一個大錯誤:
this.getGeoLevelDetails.gid;
首先你是不是調用的功能,但作爲一個實例變量,期待返回全局聲明的對象。這就是你所得到的理由:
Uncaught TypeError: Cannot read property 'gid' of undefined
TL; DR
綜上所述,如果你想從一個模型轉換的值到一個視圖,你可以通過調用訪問此視圖中的模型,或者如果您希望在同一視圖中獲取值,則可以使用上面介紹的方法。
如果上述解決方案都不符合您的需求,您可以採用另一種方法:擴展Backbone對象,然後聲明一個接收所需值的對象變量。這樣,您將消除全球污染問題:
例子:
Backbone.Details = _.extend({}, Backbone.Router);
Backbone.Details.geoLevel = id;
這個變量:Backbone.Details.geoLevel
然後會在應用程序的任何地方訪問。
爲什麼你不能直接'var id = window.gid'? – Kumar