2013-04-16 38 views
0

我正在使用Web服務將數據加載到客戶端。爲了達到綁定的目的,我需要擴展我得到的數據。即我不想按摩服務器端的所有數據。ko.observableArray和JSON數據按摩

例如,對象Trip { Id: "123", Status: "P" }

在HTML我結合table到observableArray和想要顯示 「待定」,而不是 「P」。 我來自Silverlight/MVVM,通常你會使用轉換器或只是將新的R/O屬性添加到對象。

不知道如何這種情況下應在knockout.js

回答

0

如果你只是想找一個轉換器,computed observables是一個很好的候選人。

var Tip = function(data) { 
    var self = this; 
    self.id = data.id; 
    self.status = ko.observable(data.status); 

    //You may prefer fullStatus, or statusName 
    self.statusConverter = ko.computed(function() { 
     return self.statusMap[self.status()]; 
    }); 
}; 

Tip.prototype.statusMap = { 
    P: "Pending", 
    O: "Open", 
    C: "Closed" 
}; 

可以綁定到這樣的:

<td data-bind="text: statusConverter"></td> 

你可以看到它在this fiddle