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'
                })

モデルを使用していない前に、グリッドでそれをビンジングし、問題なく動作していました。いいえ、私はそれを働かせることができません。

ext-all.js で url is undefined 例外が発生する

    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.JsonStoreますExt.data.Store

于 2012-08-01T14:36:28.933 に答える