5

このコードブロックは機能します:

Ext.define('MyApp.store.MyJsonStore', {
    extend: 'Ext.data.Store',
    fields: ['fieldName'],
    proxy: {
        type: 'ajax',
        url: 'json.php',
        reader: 'json'
    }
});

これはクラッシュします:

Ext.define('MyApp.store.MyJsonStore', {
    extend: 'Ext.data.JsonStore',
    fields: ['fieldName'],
    proxy: {
        type: 'ajax',
        url: 'json.php',
        reader: 'json'
    }
});

問題が発生する場所は次のとおりです。

ここに画像の説明を入力してください

私は何か間違ったことをしていますか?

4

2 に答える 2

4

JsonStoreExtJsライブラリのレッドゾーンのようなものです...

JsonStoreのソースを見ると、次のことがわかります。

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

実際には、ストアは独自の構成をオーバーライドします。

正直なところ、なぜあなたがより好むJsonStoreのか、私にはほとんど考えられませんExt.data.Store。Jsonは、デザインの観点からは読者のようなものです。ストアは単にレコードを保存するだけです。

私は自分のアプリでのみ使用Ext.data.Storeしています。Ext.data.TreeStore

于 2013-01-17T17:49:30.447 に答える
1

Ext JS 4.2.1でJsonPストアで同様の問題が発生していました。これは、初期ストア構成でURLを設定しなかったことが原因です。ロード中に動的に渡すURLを作成していました:

myStore.load({ url: 'json.php' });

これにより、渡されたURLが正常に読み込まれましたが、まったく同じエラーとスタックトレースが発生し、データが実際に表示されることはありませんでした(Chromeデベロッパーツールでしか表示できませんでした)。次のコードを使用して問題を解決しました。

myStore.proxy.url = 'json.php';
myStore.load();

私たちはまったく同じことをしているわけではないことを知っていますが、私たちが得たエラーは同じなので、うまくいけば、これは少なくともあなたを正しい方向に向けることができます。

アップデート

結局のところ、この問題は実際には、値を自動ロードしていたComboBoxに起因していました。クリックすると値を再ロードしようとし、load({})呼び出しでURLを渡して初めて値を正常にロードしたにもかかわらず、プロキシを使用した独自のロードメソッドを使用していました。 URL(未定義)。これが、プロキシURLを設定することでエラーが停止した理由です。

私にとっての本当の解決策は、構成をに設定することにより、ComboBoxが自動ロードされないようにすることでしqueryModelocal

于 2013-06-12T16:50:53.490 に答える