代码之家  ›  专栏  ›  技术社区  ›  Oguz Karadenizli

如果不存在,则添加属性,并使用淘汰映射选项同时创建

  •  0
  • Oguz Karadenizli  · 技术社区  · 13 年前

    classroom.manager在服务器上可以为null。所以它可能不是来自服务器。如果它不是来自服务器,我想添加它并用我自己的构造函数创建。如果它来自服务器,我想用它自己的数据创建它。

     var mappingOption = {
    
          create: function (classroom) {
            var res = ko.mapping.fromJS(clasroom.data);
    
            if (res.manager == undefined)
                res.manager = ko.observable(new Manager());
    
            return res;
        },
        'manager': {
            create: function (args) {
                var res = ko.mapping.fromJS(args.data);
                var res2 = new Manager();
                $.extend(res2, res)
                return res2;
            }
        }
    
    1 回复  |  直到 13 年前
        1
  •  1
  •   Pete - MSFT    13 年前

    教室模型

    var Classroom = function(data) {
        self = this;
        data = data || {};
            self.manager = data.manager || new Manager();
    
        ko.mapping.fromJS(data, { 
            'manager': {
                function (managerData) {
                    return new Manager(managerData);
                    }
                }
            }, self);
    
    };
    

    经理模型

    var Manager = function(data) {
        self = this;
        data = data || {};
        ko.mapping.fromJS(data, {}, self);
    };
    

    关键部分是 data || new Manager() 部分