无法在商店或视图中使用getApplication()

时间:2012-02-16 18:32:50

标签: sencha-touch-2

我正在使用框架的新MVC模式编写一个简单的Sencha Touch 2应用程序 - 因此,有模型,存储,控制器和视图,所有这些都与应用程序捆绑在一起。

现在,有可能使用“this.getApplication()”来获取这个超级超级类“应用程序”的实例。

现在存在问题 - getApplication()仅返回app-instance,如果我在控制器中 - 在视图,模型或商店中,它返回“undefined”。

基本上,我可以理解这种行为背后的想法 - 您的业务必须在控制器中,而不是其他地方......所以您不必知道商店,视图或模型等应用程序实例...

但是......让全局属性生活在主应用程序中会非常好。

例如,我想在Application中全局定义我的webservice-url并在我需要的任何地方使用该变量 - 不幸的是,我也需要在商店中使用这个url。

现在,我看到在商店中访问此全局变量的唯一方法是通过我的命名空间。而不是使用“this.getApplication()。serviceUrl”我只通过命名空间找到了“NameOfMyApp.app.serviceUrl”的解决方案 - 而这可能不是解决此问题的最佳方法。

有关这个问题的任何想法?是否有更好的,始终可行的方式从各处获取应用程序实例?或者,如果不在应用程序中,我应该在哪里存储全局变量?

2 个答案:

答案 0 :(得分:3)

您可以访问最新Sencha Touch 2测试版中AppName.app属性的应用程序实例。

Ext.application({
    name: 'Sencha',

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

答案 1 :(得分:1)

我使用ExtJS 4.1.1a,Ext.app.Application.instance似乎是唯一的解决方案。在控制器中,您可以使用this.application