我正在使用框架的新MVC模式编写一个简单的Sencha Touch 2应用程序 - 因此,有模型,存储,控制器和视图,所有这些都与应用程序捆绑在一起。
现在,有可能使用“this.getApplication()”来获取这个超级超级类“应用程序”的实例。
现在存在问题 - getApplication()仅返回app-instance,如果我在控制器中 - 在视图,模型或商店中,它返回“undefined”。
基本上,我可以理解这种行为背后的想法 - 您的业务必须在控制器中,而不是其他地方......所以您不必知道商店,视图或模型等应用程序实例...
但是......让全局属性生活在主应用程序中会非常好。
例如,我想在Application中全局定义我的webservice-url并在我需要的任何地方使用该变量 - 不幸的是,我也需要在商店中使用这个url。
现在,我看到在商店中访问此全局变量的唯一方法是通过我的命名空间。而不是使用“this.getApplication()。serviceUrl”我只通过命名空间找到了“NameOfMyApp.app.serviceUrl”的解决方案 - 而这可能不是解决此问题的最佳方法。
有关这个问题的任何想法?是否有更好的,始终可行的方式从各处获取应用程序实例?或者,如果不在应用程序中,我应该在哪里存储全局变量?
答案 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
。