2014-12-27 16 views
0

我在我的模型代理正試圖讀取配置Extjs5,解決代理的依賴,同時加載模型

proxy: 
{ 
    type:'rest', 
    url:MyApp.Config.MY_SERVICE,  <-- Problem 
    reader: { 
     type: 'json', 
     rootProperty:'contact' 
    }, 
    writer: { 
     type: 'json', 
     writeAllFields: true 
    }, 

}

下面的配置類初始加載app.js

Ext.define('MyApp.Config', 
{  
alias:'Config',  
statics: 
{  
    MY_SERVICE: 'http://localhost:8080/myapp/myservice', 
} 
} 

的錯誤,我得到的是

Uncaught TypeError: Cannot read property 'MY_SERVICE' of undefined (anonymous function) 

完全相同的代碼在我的商店代理內工作。

回答

0

這可能是一個加載順序問題。由於在模型定義過程中使用了靜態變量,因此即使您已在app.js文件中定義它,配置類仍有可能尚未定義。

在完全處理Ext.define調用之前,MyApp.Config類將不會被定義。但模型的定義需要它 - 您正在構建一個對象,該對象使用該類作爲調用的一部分,它的作用是Ext.define。這意味着參考需要做好準備,當在閱讀文件

一個解決方案是用一個函數來替換對象 - 例如:

Ext.define('MyApp.MyModel', function() { 
    return { 
    ... 
    proxy: { 
    type:'rest', 
    url: MyApp.Config.MY_SERVICE, 
    } 
    } 
}) 

這種方法的優點是,它會推遲創建對象,直到後面的順序,可能使app.js代碼有機會定義MyApp.Config對象。

但是,這仍然依賴於獲取正確的訂單。最簡單的方法就是讓你的應用程序類需要你的配置類 - 這些需求應該在模型之前被處理,等等。你的配置類應該是第一個需要的東西。