还在Sencha的网站上here
询问调用
时,不会调用我的数据模型的“序列化”功能model.set("<fieldName>", <newValue>);
我很清楚为什么没有调用序列化函数... 我错过了什么,或者这是一个错误吗?
(这是小提琴的代码)
Ext.application({
name : 'Fiddle',
requires: [
"Ext.data.Store"
],
launch : function() {
var store = Ext.create("Ext.data.Store", {
data: [{Id: 0, Name: "Bill", Props: "{foo: 2, bar:{pan:5}}"}],
fields:[
{name: "Id", type: "int"},
{name: "Name", type: "string"},
{name: "Props",
convert: function(value, record){
console.log("called convert");
return Ext.JSON.decode(value);
},
serialize: function(value, record){
alert("never getting called!! :(");
console.log("sure, i'll put log here too..not getting called though");
return Ext.JSON.encode(value);
}
}
]
});
console.log(store.getAt(0));
var rec = store.getAt(0);
var newProp = {rec:"junk", foo: "orange"};
console.log(newProp);
rec.set("Props",newProp);
}
});
答案 0 :(得分:0)
源内容(JSON / XML)到业务模型(Ext.data.Model)的映射不会在ExtJS的数据模型系统中自动创建。因此,需要使用映射/关联或类似的东西来产生这种关系的另一步骤。
即。数据模型不会将原始JSON存储为读/写,这在大多数情况下都很好。当需要通过ExtJS更新JSON字符串时,一个解决方案是在模型上设置
convertOnSet
为false,允许通过数据模型上的提取/更新函数自定义操作JSON字符串。