2013-10-22 37 views
1

我有一個很多屬性的視圖模型,但我只想使用toJSON方法序列化兩個可觀察數組。這可能嗎?只有序列化與Knockout某些屬性JSON

我沒有遇到一個一篇文章,說做這樣的事情:

var json = ko.toJSON(self, ["rates", "discounts"]); 

但是,僅僅產生如下:

{"rates":[{},{},{},{},{},{}],"discounts":[{},{},{},{}]} 

它的利率和折扣的正確數量,但他們由於某種原因,這些都是空的。

回答

1

一種方式

var json = ko.toJSON({ rates: self.rates, discounts: self.discounts }); 

或者使用ko.mapping插件,你可以配置哪些成員包括

+0

謝謝你,這工作。 :) – Tom

0

您可以通過用戶Array.map扁平化數組中的項目。

這應該做的伎倆:

function flattenArrayItem(arrayItem) { 
    var result = { 
     prop1: arrayItem.prop1, 
     prop2: arrayItem.prop2 
     // continue mapping needed properties 
    }; 
    return result; 
} 

// if observable array 
var json = ko.toJSON(someArray().map(flattenArrayItem)); 
// if normal array 
var json = ko.toJSON(someArray.map(flattenArrayItem)); 
+0

這不是太複雜嗎? – Damien

+0

它可能是,但它將映射分開,以便在需要時可以在其他地方重新使用它。 –

+0

感謝您的迴應,但我認爲我會選擇Anders的解決方案,因爲這是我需要的,我不需要重複使用它。 – Tom