0

我使用 ExtJS 4.1。这是我的模型和商店:

Ext.define('MyModel', {
    extend: 'Ext.data.Model',
    fields: ['status', 'data', 'data1', 'data2']
});

var store1 = Ext.create('Ext.data.JsonStore', {
    model: 'MyModel',
    proxy: {
        type: 'ajax',
        url : 'actionJsonServlet'
    },
    autoLoad: true
});

通过 Ajax 加载商店后,我想更改 JsonStore 的第一个“状态”(仅用于第一行)的值。我尝试了下面的行,但它不起作用(第 2 行的记录未定义):

var record = store1.getAt(0);
record.set("status", "Waiting");

我有这个错误:

Cannot call method 'set' of undefined
4

1 回答 1

1

您的问题很可能是由于存储加载的异步性质造成的。根据您的代码编写方式,您可能会在加载存储之前过早尝试执行存储操作,即使您已打开自动加载。

最好的方法是在 store 上设置一个加载事件监听器,然后执行你的操作。她就是一个例子:

Ext.define('MyApp.store.Drafters', {
    extend:'Ext.data.Store',
    model:'MyApp.model.User',
    autoLoad:true,
    proxy:{
        type:'ajax',
        url:'user/drafters.json',
        reader:{
            type:'json',
            root:'data'
        }
    },
    listeners:{
        load:function (store, recs) {
            store.insert(0, {uid:'', name:''});  //adding empty record to enable deselection of assignment
        }
    }
});
于 2012-11-14T18:37:15.753 回答