Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ExtJS4存储代理url覆盖_Extjs_Extjs4 - Fatal编程技术网

ExtJS4存储代理url覆盖

ExtJS4存储代理url覆盖,extjs,extjs4,Extjs,Extjs4,我试图通过改变代理url(实际端点而不是参数)来重用存储。是否可以使用以下语法覆盖存储实例的代理URL: { ...some view config ... store: Ext.create('MyApp.store.MyTasks',{proxy:{url:'task/my.json'}}), } 是否已在存储定义中很好地定义了代理 编辑:抽象存储源代码集 if (Ext.isString(proxy)) { proxy = { type:

我试图通过改变代理url(实际端点而不是参数)来重用存储。是否可以使用以下语法覆盖存储实例的代理URL:

{
...some view config ...
store: Ext.create('MyApp.store.MyTasks',{proxy:{url:'task/my.json'}}),
}
是否已在存储定义中很好地定义了代理

编辑:抽象存储源代码集

    if (Ext.isString(proxy)) {
        proxy = {
            type: proxy    
        };
    }

解决方案:store.getProxy().url='task/myMethod.json'

使用
store.setProxy()
方法

创建存储时,不能仅覆盖代理的url。您必须传递一个完整的代理。这是因为,库作为一个整体替换了代理!因此,您可以做的是:

{
...some view config ...
store: Ext.create('MyApp.store.MyTasks',{
            proxy: {
                type: 'ajax',
                url : 'task/my.json',
                reader: {
                    type: 'json',
                    root: 'rows'
                }
            }
        }),
}
现在,另一种可能性是,在拥有store实例后更改端点。如果需要从其他端点加载存储,可以使用load方法

store.load({url:'task/others.json'});
因为,在您的情况下,您试图重用一个存储,所以您可以传递整个代理。商店的(MyApp.store.MyTasks)构造函数应该能够处理新配置并将其应用于商店。。。以下是一个例子:

constructor: function(config) {

    this.initConfig(config);
    this.callParent();
} 
{
…一些选项卡配置。。。
store:Ext.create('MyApp.store.MyTasks'),
听众:{
afterrender:函数(选项卡){

tab.store.getProxy().url='task/myMethod.json';//我有一个用于存储默认设置的BaseStore

Ext.define('ATCOM.store.Shifts', {
    extend : 'ATCOM.store.BaseStore',
    model : 'ATCOM.model.Shift',
    constructor : function(config) {
        this.callParent([config]);
        this.proxy.api = {
            create : 'shifts/create.json',
            read : 'shifts/read.json',
            update : 'shifts/update.json',
            destroy : 'shifts/delete.json',
        };
    }
});

谢谢,但这需要完整的代理配置,我正在寻找对现有代理的覆盖。它也可以是字符串类型。请尝试仅配置要更改的url。Varun,有关使用字符串参数时会发生什么情况,请参阅上面的编辑。谢谢您提供完整的答案。我将其标记为有用。不过,我有一点不同这不是我更喜欢的Saki方法。请参见下面的答案。store.getProxy().url='task/myMethod.json';
Ext.define('ATCOM.store.Shifts', {
    extend : 'ATCOM.store.BaseStore',
    model : 'ATCOM.model.Shift',
    constructor : function(config) {
        this.callParent([config]);
        this.proxy.api = {
            create : 'shifts/create.json',
            read : 'shifts/read.json',
            update : 'shifts/update.json',
            destroy : 'shifts/delete.json',
        };
    }
});