ExtJS4 存储代理 url 覆盖

发布于 2024-12-08 13:18:35 字数 461 浏览 0 评论 0原文

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

{
...some view config ...
store: Ext.create('MyApp.store.MyTasks',{proxy:{url:'task/my.json'}}),
}

如果代理已在商店定义中明确定义?

编辑:AbstractStore源代码按以下方式设置代理

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

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

I am trying to reuse a store by altering proxy url (actual endpoint rather than params). Is it possible to override proxy URL for a store instance wih the following syntax:

{
...some view config ...
store: Ext.create('MyApp.store.MyTasks',{proxy:{url:'task/my.json'}}),
}

if proxy is already well defined on the Store definition?

EDIT: AbstractStore source code sets proxy the following way

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

SOLUTION : store.getProxy().url = 'task/myMethod.json';

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

温暖的光 2024-12-15 13:18:35
{
    ... some tab config ...
    store: Ext.create('MyApp.store.MyTasks'),
    listeners: {
        afterrender: function(tab) {
            tab.store.getProxy().url = 'task/myMethod.json'; //<--Saki magic :)
            tab.store.load();
        }
    }
}

http://www.sencha.com /forum/showthread.php?149809-通过更改代理 URL 重用存储

{
    ... some tab config ...
    store: Ext.create('MyApp.store.MyTasks'),
    listeners: {
        afterrender: function(tab) {
            tab.store.getProxy().url = 'task/myMethod.json'; //<--Saki magic :)
            tab.store.load();
        }
    }
}

http://www.sencha.com/forum/showthread.php?149809-Reusing-Store-by-changing-Proxy-URL

脱离于你 2024-12-15 13:18:35

创建商店时不能单独覆盖代理的 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();
} 

You cannot override the url of a proxy alone when creating a store. You will have to pass a complete proxy. This is because, the library replaces the proxy as a whole! So, what you can do is:

{
...some view config ...
store: Ext.create('MyApp.store.MyTasks',{
            proxy: {
                type: 'ajax',
                url : 'task/my.json',
                reader: {
                    type: 'json',
                    root: 'rows'
                }
            }
        }),
}

Now another possibility is, changing the end point after you have the instance of store. If you need to load the store from a different endpoint, you can make use of the load method.

store.load({url:'task/others.json'});

Since, in your case you are trying to re-use a store, you can pass the whole proxy. Your store's (MyApp.store.MyTasks) constructor should be capable of handling the new config and applying it to the store... Here is an example:

constructor: function(config) {

    this.initConfig(config);
    this.callParent();
} 
一曲爱恨情仇 2024-12-15 13:18:35

使用store.setProxy()方法。 链接:

Use the store.setProxy() method. Link here:

您的好友蓝忘机已上羡 2024-12-15 13:18:35

我有一个 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',
        };
    }
});

I have a BaseStore which I use to store default settings.

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',
        };
    }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文