Sencha touch Can';t覆盖Sencha Touch应用程序中的应用程序变量
我有一个Sencha Touch应用程序,我正试图为它设置一个全局变量。 编辑:更多说明,我需要能够在所有视图中访问此全局变量 我将应用程序上的变量设置为默认值,然后在启动时覆盖它。但是,它没有被覆盖Sencha touch Can';t覆盖Sencha Touch应用程序中的应用程序变量,sencha-touch,extjs,sencha-touch-2,Sencha Touch,Extjs,Sencha Touch 2,我有一个Sencha Touch应用程序,我正试图为它设置一个全局变量。 编辑:更多说明,我需要能够在所有视图中访问此全局变量 我将应用程序上的变量设置为默认值,然后在启动时覆盖它。但是,它没有被覆盖 Ext.application({ name: 'hd', isAuth: 'false', launch: function() { hd.app.isAuth = 'true'; Ext.Msg.alert(hd.app.isAuth); /
Ext.application({
name: 'hd',
isAuth: 'false',
launch: function() {
hd.app.isAuth = 'true';
Ext.Msg.alert(hd.app.isAuth); //This always returns 'false'
}
});
我没有收到任何控制台错误,我也找不到有类似问题的人。我显然做错了。有人能告诉我正确的方法吗?我认为
应用程序不应该出现在这里。此代码段提醒true
:
Ext.application({
name: 'hd',
isAuth: 'false',
launch: function() {
hd.isAuth = 'true';
Ext.Msg.alert(hd.isAuth); // will return true as I have tested
}
});
祝你好运
已编辑:这应该将hd.app.isAuth更改为您想要的值
Ext.application({
name: 'hd',
isAuth: 'false',
setIsAuth: function(value){
this.isAuth = value;
},
launch: function() {
hd.app.setIsAuth('true');
Ext.Msg.alert(hd.app.isAuth);
}
});
你可以在下面做
Ext.application({
name: 'hd',
launch: function() {
this.isAuth = 'true';
Ext.Msg.alert(hd.isAuth); //This returns 'true'
this.isAuth = 'false';
Ext.Msg.alert(hd.isAuth);//This returns 'false';
}});
从我阅读的文档中,设置全局应用程序变量时需要app
。例如,如果我提醒hd.app.isAuth
,它将提醒我在isAuth
上放置的任何值。在实际视图中,警告hd.app.isAuth将仍然警告该值。但是,警报hd.isAuth
返回“未定义”。您的示例只是设置一个局部变量,而不是覆盖全局变量,不幸的是,我需要这样做。我刚刚修改了一点,只是为了创建一个setter函数并调用它。我不确定,但我想当直接在本地文件中使用hd.app.isAuth='true'
时,scope
可能会出现问题,但全局变量不会被带入其他视图中。你知道为什么会这样吗?我应该怎么做才能使它的价值在整个应用程序中持久化?这确实有效,但它是脆弱的。我还和一些人在官方的Sencha论坛上合作。这似乎确实设置了变量,但新值仅在回调、侦听器等中可用。如果尝试在配置中使用所述变量,则会失败。似乎没有什么好办法。幸运的是,我们已经找到了一种解决方法,使用了一些AJAX请求和一些PHP会话处理。因为这个答案是最正确的,我接受了。感谢您的帮助。谢谢,这在launch
中起作用,但我需要能够在应用程序级别设置一个变量,我可以在任何时候操作该变量,并使其值在应用程序的所有视图中都可用。不幸的是,这不起作用。您可以使用代码hd.isAuth=true或false在任意点设置此值