2012-10-07 24 views
1

創建映射鉤當使用knockout.mapping插件knockout.js我可以自定義集合中的方式的數據項都像這樣創建的: -Knockout.Mapping爲簡單的JSON陣列

var ItemModel = function (data) { 
    ko.mapping.fromJS(data, {}, this); 
    this.FooProperty = ...; 
}; 

var mapping = { 
    'Items': { 
     create: function (options) { 
      return new ItemModel(options.data); 
     } 
    } 
} 

this.Items = ko.mapping.fromJS(data,mapping);

這假定數據包含一個屬性「Items」,其中包含一個集合。但是,如果數據只是一個JSON數組呢?如何將創建函數掛接到傳入數據的頂級根目錄中的項目?

從查看文檔看來,映射對象中的鍵可以是要操作的數據的屬性名稱,也可以是包含,忽略,複製之一。從這個角度看,我看不出如何實現我想要的東西,除非將傳入的JSON用一個propery包裝到一個對象中,然後將其映射出來,然後解開結果。

回答

3

您可以在您的映射對象的頂層放create函數來處理根對象:

像:

var mapping = { 
    create: function(options) { 

    } 
}; 

或者,你可以通過它像:

ko.mapping.fromJS({ Items: data }); 

但這聽起來像也許你試圖避免這樣做。