数据模型'序列化'属性"set"ting未调用的函数

Data Model's "serialize" function not called on property "set"ting

本文关键字:quot 调用 函数 set 序列化 属性 数据模型 ting      更新时间:2023-09-26

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字符串进行自定义操作。

相关文章: