ko.observableArray和JSON数据按摩

时间:2013-04-16 21:09:35

标签: javascript asp.net knockout.js

我正在使用Web服务将数据加载到客户端。出于绑定目的,我需要扩展我得到的数据。即我不想按摩服务器端的所有数据。

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

在HTML中,我将table绑定到observableArray,并希望显示“待定”而不是“P”。 我来自Silverlight / MVVM,通常你会使用转换器或只是添加新的R / O属性到对象。

不确定如何在knockout.js中处理这种情况

2 个答案:

答案 0 :(得分:1)

您可以在这里找到所需的一切:

http://net.tutsplus.com/sessions/knockout-succinctly/

读得很好。

答案 1 :(得分:0)

如果您只是在寻找转换器,computed可观察物是一个很好的候选者。

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

中看到它