看上图,因为修改4次Store中的字段值,所以会显示4次警告:[WARN][Ext.data.Operation#process] Unable to match the record that came back from the server.
出现这个警告的原因是:从服务器返回的数据不能匹配Store里的记录。(字面意思)。 具体就是: 我们在定义store时,例如下边的代码:
var camnprStore = Ext.create("Ext.data.Store", {
fields: ['name', 'count'],
data: [{name: '布布', count: 20}, {name: '挎包包', count: 10}, {name: '真男人', count: 15}, {name: 'facklook', count: 60}]
});
如果我们想修改这里边的count的值。 (一直后台程序C#web接口返回的数据形式是:
{responseCode:1, filesCount: 5, decisionCount: 9, descCount: 20, problemCount: 30 })
那么我们通过Store的getAt先得到某行记录,让回通过set方法修改Store里的值,代码如下:
var camnprStore = Ext.getStore('Camnpr');
camnprStore.load(function (records, operation, success) {
if (success) {
try {
Ext.data.JsonP.request({
url: 'http://camnpr.com/',
callbackKey: 'callback',
params: {
user: 'camnpr',
typeid: window.localStorage.getItem('id')
},
success: function (result) {
if (result.responseCode == 1) {
try {
camnprStore.getAt(0).set('count', result.filesCount);
camnprStore.getAt(1).set('count', result.decisionCount);
camnprStore.getAt(2).set('count', result.descCount);
camnprStore.getAt(3).set('count', result.problemCount);
//navsStore.sync(); //如果加上这句,就会报出警告,取消这个就不会显示警告了
} catch (e) { }
}
}
});
} catch (e) { }
}
}, this);
针对Store的Add添加记录,会不会也报出这个错误。解决方法应该一样。 如果你也遇到这个错误,此方法不行的话,欢迎留言。