0

我在一个小项目中工作,我想使用 ext.data.model,问题是当我想加载一些数据时遇到了一些问题。

这是模型声明。

Ext.define('Model.Item',{
    extend: 'Ext.data.Model',
    fields: ['id', 'code', 'description'],


    proxy: {
        type: 'ajax',
        api: {
            read: 'Handlers/Item.ashx',
            create: 'Handlers/Item.ashx?action=create',
            destroy: 'Handlers/Item.ashx?action=delete',
            update: 'Handlers/Item.ashx?action=update'
        },
        reader: {
            type: 'json',
            root: 'items'
        },
        writer: {
            type: 'json',
            writeAllFields: true,
            root: 'data',
            allowSingle: false
        }
    }
});

我将它与这样的 jsonstore 一起使用。

new Ext.data.JsonStore({
                    storeId: 'mainStore',
                    autoLoad: true,
                    model: 'Model.Item'
                })

在我没有使用模型之前,用网格将它绑定,并且工作得很好。不,我不能让它工作。

我得到 url 是 ext-all.js 中未定义的异常

    urlAppend : function(url, string) {
        if (!Ext.isEmpty(string)) {
            return url + (url.indexOf('?') === -1 ? '?' : '&') + string;
        }


        return url;
    },

此函数是从 buildUrl 函数中的 Ext.data.proxy.Server 调用的。

任何帮助将不胜感激。

4

1 回答 1

2

通过使用JsonStore,您将覆盖模型的代理定义 -JsonStore添加自己的代理配置:

Ext.define('Ext.data.JsonStore',  {
    extend: 'Ext.data.Store',
    alias: 'store.json',

    …

    constructor: function(config) {
        config = Ext.apply({
            proxy: {
                type  : 'ajax',
                reader: 'json',
                writer: 'json'
            }
        }, config);
        this.callParent([config]);
    }
});

如果商店存在这种情况,它将不会在模型中寻找。

要解决此问题,请替换Ext.data.JsonStoreExt.data.Store.

于 2012-08-01T14:36:28.933 回答