extjs全局变量总是返回原始值

时间:2016-09-23 19:43:32

标签: extjs singleton global-variables

我试过像这样制作一个extjs全局变量类:

Ext.define('ccc.global.GlobalVariables', {
    singleton: true,
    username: 'hi user',
    password: '',
    clientID: '',
    token: ''
});

然后在控制器中我尝试更改变量:

ccc.global.GlobalVariables.username = loginData.username;

现在我正在尝试在不同的模型代理中访问这些变量,并且它会不断返回'hi user'的原始值。

proxy: {
    type: 'ajax',
    extraParams: {
        'username': ccc.global.GlobalVariables.username
    },

任何人都能看到我做错了什么?

1 个答案:

答案 0 :(得分:5)

当在代理定义中使用变量时,变量内容在定义时设置到代理中,而不是在实例化时,尤其是在使用时。它不会自动更新。

这就是为什么,至少对于组件,有bind属性明确告诉组件哪个配置绑定到外部源,以便在更新源时自动更新。

IIRC代理不支持可绑定的mixin,因此您必须在每次sync / load / ...操作之前手动设置extraParam:

store.getProxy().setExtraParam("username",ccc.global.GlobalVariables.username);
store.load()