3

以下は私のものMyStore.jsです:

Ext.define('MyApp.store.MyStore', {
    extend: 'Ext.data.Store',
    model: 'MyApp.model.Note',
    autoLoad: true,
    proxy: {
        type: 'ajax',
        api: {
            /* I want to change the following two filepaths */
            read: 'data/notesMar2013.json',
            update: 'data/notesMar2013.json' 
        },
        reader: {
            type: 'json',
            root: 'data',
            successProperty: 'success'
        }
    }
});

次のように、コントローラーを介して MyStore の値readupdate値を変更しようとしています:api

var notesStore = Ext.getStore('MyStore');
notesStore.on('load',function(notesStore){
        var proxy = notesStore.getProxy();
        Ext.apply(proxy.api,{
            /* Changing the file paths here */
            read: 'data/notesApr2013.json',
            update: 'data/notesApr2013.json' 
        })
        notesStore.load();                              
},this,{single:false});
//
console.log(notesStore);

上記の関数を使用して、MyStore を更新しようとしていますが、更新されません。Chrome コンソールでチェックインすると、値は正常に変更されましたが、使用したスト​​アを更新またはオーバーライドしませんでしたnotesStore.load()。何が問題なのですか?

以下のリンクを参考にしました

回答: コードは正常に機能していました。私の問題を説明しましょう。ストアのコンテンツをコンテナに表示していましたが、最初はコンテナにコンテンツが入っていて、高さが固定されていました。コンテナにコンテンツを追加しても、コンテナの高さが固定されているため、非表示になります。これまでは、既定のコンテンツを削除してから追加するのではなく、既定のコンテンツにコンテンツを追加していました。それが実際の問題でした。

4

1 に答える 1

2

それは問題なく動作するはずなので、他の時点でエラーが発生します。このJSFiddleのコンソールを見てください。ここに私が使用したテストコードがあります

Ext.define('MyApp.model.Note',{extend:'Ext.data.Model'});
Ext.define('MyApp.store.MyStore', {
    extend: 'Ext.data.Store',
    model: 'MyApp.model.Note',
    proxy: {
        type: 'ajax',
        getUrl: function(request) {
            console.log('fetched request url');
            console.log(this.api[request.action]);
            return request.url || this.api[request.action] || this.url;
        },
        api: {
            /* I want to change the following two filepaths */
            read: 'data/notesMar2013.json',
            update: 'data/notesMar2013.json' 
        },
        reader: {
            type: 'json',
            root: 'data',
            successProperty: 'success'
        }
    }
});
var store = Ext.create('MyApp.store.MyStore');
console.log('The origin API');
console.log(store.getProxy().api);
store.load();
var proxy = store.getProxy();
var newApi =  {read: 'data/2013.json', update: 'data/2013.json' };
Ext.apply(proxy.api,newApi);
console.log('The changed API');
console.log(store.getProxy().api);
store.load();
于 2013-03-28T07:20:33.557 に答える