无法在商店或视图中使用 getApplication()
Posted
技术标签:
【中文标题】无法在商店或视图中使用 getApplication()【英文标题】:Cannot use getApplication() in a store or a view 【发布时间】:2012-02-16 18:32:49 【问题描述】:我正在使用框架的新 MVC 模式编写一个简单的 Sencha Touch 2 应用程序 - 因此,有模型、存储、控制器和视图,所有这些都与一个应用程序联系在一起。
现在,可以使用“this.getApplication()”来获取这个超级超级类“Application”的实例。
现在出现了问题 - getApplication() 仅返回应用程序实例,如果我在控制器中 - 在视图、模型或商店中,它返回“未定义”。
基本上,我可以理解这种行为背后的想法——你的业务必须在控制器中,没有其他地方......所以你不必知道商店、视图或模型等东西中的应用程序实例......
好的,但是.. 将全局属性放在主应用程序中会非常好。
例如,我想在应用程序中全局定义我的 webservice-url 并在我需要的任何地方使用该变量 - 不幸的是,我在商店中也需要这个 url。
现在,我看到在商店中访问此全局变量的唯一方法是通过我的命名空间。我没有使用“this.getApplication().serviceUrl”,而是通过“NameOfMyApp.app.serviceUrl”的命名空间找到了解决方案——这不是解决这个问题的最佳方法。
关于这个问题的任何想法?有没有更好的、始终有效的方法来从任何地方获取应用程序实例?或者,如果不在应用程序中,我应该将全局变量存储在哪里?
【问题讨论】:
【参考方案1】:您可以在最新的 Sencha Touch 2 测试版中访问 AppName.app
属性上的应用程序实例。
Ext.application(
name: 'Sencha',
launch: function()
// Logs the application instance
console.log(Sencha.app);
);
【讨论】:
嘿,谢谢你的回答 :) 是的,我在文档中注意到了这种可能性......但我认为,这不是最好的方法。如果重构应用程序的名称会怎样? this.getApplication() 与应用名称无关 不幸的是,没有其他方法可以做到这一点。我在 Sencha Touch 2 上工作。:) 这在使用时不起作用:Sencha app build testing 等。AppName 对象不再包含“app”属性。【参考方案2】:看起来 Ext.app.Application.appInstance
是与应用名称无关的解决方案
【讨论】:
【参考方案3】:我使用 ExtJS 4.1.1a 和 Ext.app.Application.instance
似乎是唯一的解决方案。在控制器中,您可以使用this.application
。
【讨论】:
以上是关于无法在商店或视图中使用 getApplication()的主要内容,如果未能解决你的问题,请参考以下文章
Magento 多语言 - 语言的双重变化导致 404(或如何在商店而不是视图中更改语言)
有没有办法使用 c# 为 Windows 8 商店应用程序缩进列表视图中的某些项目?