数据模型'序列化'属性"set"ting未调用的函数
Data Model's "serialize" function not called on property "set"ting
Sencha网站上也有这个问题
当我调用
时,我的数据模型的"serialize"函数没有被调用model.set("<fieldName>", <newValue>);
Here's a fiddle
我很不清楚为什么不调用序列化函数…我错过了什么,或者这是一个bug吗?
(这里是小提琴的代码)
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);
}
});
从源内容(JSON/XML)到业务模型(Ext.data.Model)的映射不会在ExtJS的数据模型系统中自动创建。因此,需要另一个步骤来使用映射/关联或类似的东西来生成此关系。
。数据模型不存储要读/写的原始JSON,这在大多数情况下是可以的。当需要通过ExtJS更新JSON字符串时,一个解决方案是在模型上设置
convertOnSet
为false,允许通过数据模型上的提取/更新函数对JSON字符串进行自定义操作。
相关文章:
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- "访问控制允许起源”;通过javascript从http页面调用同一网站的httpsurl时出现问题
- 多个“;脚本调用"在SINGLE”内$(文档).ready()”;
- jQuery捕获"RangeError:超过了最大调用堆栈大小“;
- jQuery:使用.attr('href',")调用javascript
- 重复“;function(){}.调用(this)"在Uglified JS中
- 无法调用方法“”;getEditResponseUrl"当使用表单ID打开表单时,绑定到工作表的Google
- 要求JS 2.1.9引起“;最大调用堆栈"使用Grunt时出错
- Fine Uploader S3-无处安全调用异步“;setUploadSuccessParams()"
- 将对象设置为Backbone.js模型,而不必调用“;set()"在每一处房产上
- "堆叠外空间”;同时通过AJAX调用填充jsTree
- 得到"未捕获的类型错误:未定义的不是函数“;当试图从对象调用get()或set()时
- "TypeError:无法调用方法'匹配'未定义的“;Angular JS指令中的Morris
- Node.js服务器在没有调用“;end()"用于服务器发送的事件
- "无法调用方法'打开'未定义的“;使用indexedDB.open时出错
- jQuery获取"事件调用“;要素
- 为什么<车身负载=“;fn()">使用函数调用,但是window.onload=fn;使用处理程序函
- "访问控制允许原点不允许原点为null"使用jQuery调用web服务时出错
- 无法调用方法“”;setHtmlContent"在GAS中
- "与服务器的连接不成功”;尝试在WebView中调用javascript时