2012-02-16 23 views
6

我正在使用框架的新MVC模式編寫簡單的Sencha Touch 2應用程序 - 因此,模型,商店,控制器和視圖都與一個應用程序。無法在商店或視圖中使用getApplication()

現在,有可能使用「this.getApplication()」來獲得這個超級超級類「應用程序」的實例。

現在有問題 - getApplication()只返回應用程序實例,如果我在控制器中 - 在視圖,模型或商店中,它返回「undefined」。

基本上,我可以理解這種行爲背後的想法 - 您的業務必須在控制器,無處可去......所以你不必知道應用程序實例的東西,如商店,視圖或模型.. 。

Okey但是..擁有主應用程序中的全局屬性將是非常好的。

例如,我想在應用程序中全局定義我的webservice-url,並在需要的地方使用該變量 - 不幸的是,我也需要這個URL。

現在,我看到在商店中訪問這個全局變量的唯一方法就是通過命名空間的方式。而不是使用「this.getApplication()。serviceUrl」我發現只有解決方案通過命名空間與「NameOfMyApp.app.serviceUrl」 - 並不是解決這個問題的最好方法。

有關這個問題的任何想法?是否有更好的,始終有效的方式從任何地方獲取應用程序實例?或者,如果不在應用程序中,我應該在哪裏存儲全局變量?

回答

3

您可以訪問最新的Sencha Touch 2測試版中的AppName.app屬性中的應用程序實例。

Ext.application({ 
    name: 'Sencha', 

    launch: function() { 
     // Logs the application instance 
     console.log(Sencha.app); 
    } 
}); 
+0

嘿,謝謝你的回答:)是的這個可能性我注意到在文檔中...但我認爲,這不可能是最好的方式來做到這一點。 如果你重構你的應用程序的名稱會怎麼樣? this.getApplication()是應用程序名稱獨立的 – jebbie 2012-02-17 09:16:38

+1

不幸的是,沒有其他方法可以做到這一點。我在Sencha Touch 2上工作。:) – rdougan 2012-02-19 02:00:47

+1

當使用Sencha應用程序構建測試等時,這不起作用.AppName對象不再包含「app」屬性。 – 2012-10-04 13:55:51

1

貌似Ext.app.Application.appInstance是應用程序的名稱無關的解決方案

1

我ExtJS的4.1.1a工作,Ext.app.Application.instance似乎是唯一的解決辦法。從控制器你可以使用this.application

相關問題