1

我有点卡在这里。我的型号代码是

Ext.define('MyFancyModel', {
    extend: 'Ext.data.Model',

    fields: [
        { name: 'id', type: 'string' },
        { name: 'name', type: 'string' }
    ],

    proxy: {
        type: 'rest',
        url: '/fancymodel',
        noCache: false
    }
});

当我尝试使用 id 加载数据时

Ext.ModelManager.getModel('MyFancyModel').load('some-id', {});

请求 url 是/fancymodel/some-id?id=some-id这显然是不正确的。那么如何在没有任何补丁或覆盖的情况下实现正确的请求 url: /fancymodel/some-id ?

编辑:

jsfiddle

在开发者控制台中,您可以看到失败的 GET 请求

http://fiddle.jshell.net/fancymodel/some-id?id=some-id

编辑:

Sencha 论坛上的主题

4

1 回答 1

2

我还没有找到任何 ExtJS 解决方案,所以我写了一个小补丁(不确定它是否适用于所有情况):

Ext.override(Ext.data.proxy.Rest, {
    buildUrl: function (request) {
        delete request.params.id;
        return this.callParent(arguments);
    }
});

标准方式:

Ext.define('MyPatches.data.proxy.Rest', {
    override: 'Ext.data.proxy.Rest',
    buildUrl: function (request) {
        delete request.params.id;
        return this.callParent(arguments);
    }
});
于 2013-03-14T12:18:27.840 回答