Sencha touch 如何在senchatouch代理类实例化后向其添加头

Sencha touch 如何在senchatouch代理类实例化后向其添加头,sencha-touch,sencha-touch-2,Sencha Touch,Sencha Touch 2,我目前有一个自定义代理类,如下所示: Ext.define('MyApp.proxy.SecureProxy', { alias: 'proxy.securerestproxy', extend: 'Ext.data.proxy.Rest', constructor: function () { this.headers = { // "AUTH-TOKEN": MyApp.app.authToken }

我目前有一个自定义代理类,如下所示:

Ext.define('MyApp.proxy.SecureProxy', {
    alias: 'proxy.securerestproxy',
    extend: 'Ext.data.proxy.Rest',  

    constructor: function () {
        this.headers = {
           // "AUTH-TOKEN": MyApp.app.authToken
        }
        this.callParent(arguments);
    },

    config: {
        headers: {
            //"AUTH-TOKEN": MyApp.app.authToken
        }
    }       
});
问题是,我不能在配置或构造函数中设置我的头值,因为这在过程中太早了。此类在设置MyApp.app.authToken之前、在进行身份验证之前实例化。在进行身份验证之后,或者在rest代理的预请求事件中,是否有任何方法可以将头值设置为app类中的auth令牌

问题在于API文档中只有一个事件:Exception。我想代理上可能有一个BeforeRequest事件,我可以使用。

您可以随时使用

var headers = proxy.getHeaders() || {};
headers["AUTH-TOKEN"] = MyApp.app.authToken;
proxy.setHeaders(headers)
编辑:也可以更改Ext.Ajax单例:

var defaultHeaders = Ext.Ajax.getDefaultHeaders() || {};

if (!defaultHeaders["AUTH-TOKEN"]) {
    defaultHeaders["AUTH-TOKEN"]  = MyApp.app.authToken;
    Ext.Ajax.setDefaultHeaders(defaultHeaders)
}

我不确定我是否理解这个例子。应用程序中的位置我可以获得“代理”的引用吗?我从不直接实例化它,只是通过存储和代理之间的链接间接实例化。您可以在模型或存储上使用getProxy()方法来获取代理的引用。太好了,您的代码可以工作了!setDefaultHeaders与getDefaultHeaders调用的结合实现了这一点。谢谢。@lstak非常感谢您的代码。它帮助了我。