Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ExtJS 4.1-更改JsonStore的值_Extjs_Store_Javascript Framework_Extjs4.1 - Fatal编程技术网

ExtJS 4.1-更改JsonStore的值

ExtJS 4.1-更改JsonStore的值,extjs,store,javascript-framework,extjs4.1,Extjs,Store,Javascript Framework,Extjs4.1,我使用ExtJS4.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 :

我使用ExtJS4.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的第一个“status”(仅针对第一行)的值。 我尝试了下面的几行,但不起作用(第2行的记录未定义):

我有一个错误:

Cannot call method 'set' of undefined

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

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

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

你如何加载你的商店?您是否在
on()
函数中设置了记录?为了加载我的存储,我使用上面的代码(代理的url)通过Ajax调用Javaservlet。我的servlet返回自动加载到我的存储中的Json数据。我不使用
on()
函数。我必须用它来等待Ajax调用返回吗?好的,等待Ajax返回。在
load
函数中,我尝试使用
store.update(0,{'status':'Waiting'}),而不是使用
insert
更新第一行的状态值,但它不起作用(或后面的图表未重新加载)。是否会出现相同的错误?如果没有,那么您原来的问题和问题就解决了,您可以继续,并找出图表未正确绑定到存储的原因。我建议为此创建一个特定的IIFC问题,并提供相关的代码片段——图表设置和存储绑定。我终于找到了另一个解决问题的办法。我想显示我的饼图切片的其他标题,我在标签上工作来做我想做的事情。谢谢你抽出时间。
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
        }
    }
});