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 回答