ExtJS 4.1-更改JsonStore的值
我使用ExtJS4.1。这是我的模型和商店: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 :
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
}
}
});