2012-08-09 16 views
0

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

類房間模型

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

}; 

Manager模型

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

關鍵部分是data || new Manager()

相關問題