数据模型的“序列化”函数未在属性“set”ting上调用

时间:2015-06-01 23:25:03

标签: javascript extjs

还在Sencha的网站上here

询问

调用

时,不会调用我的数据模型的“序列化”功能
model.set("<fieldName>", <newValue>); 

Here's a fiddle

我很清楚为什么没有调用序列化函数... 我错过了什么,或者这是一个错误吗?

(这是小提琴的代码)

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);


    }
});

1 个答案:

答案 0 :(得分:0)

源内容(JSON / XML)到业务模型(Ext.data.Model)的映射不会在ExtJS的数据模型系统中自动创建。因此,需要使用映射/关联或类似的东西来产生这种关系的另一步骤。

即。数据模型不会将原始JSON存储为读/写,这在大多数情况下都很好。当需要通过ExtJS更新JSON字符串时,一个解决方案是在模型上设置

   convertOnSet 

为false,允许通过数据模型上的提取/更新函数自定义操作JSON字符串。