我正在使用 Web 服务将数据加载到客户端。出于绑定目的,我需要扩展我获得的数据。即我不想按摩服务器端的所有数据。
例如,对象Trip { Id: "123", Status: "P" }
在 HTML 中,我绑定table
到 observableArray 并希望显示“Pending”而不是“P”。我来自 Silverlight/MVVM,通常您会使用转换器或只是将新的 R/O 属性添加到对象。
不确定在 knockout.js 中应该如何处理这种情况
我正在使用 Web 服务将数据加载到客户端。出于绑定目的,我需要扩展我获得的数据。即我不想按摩服务器端的所有数据。
例如,对象Trip { Id: "123", Status: "P" }
在 HTML 中,我绑定table
到 observableArray 并希望显示“Pending”而不是“P”。我来自 Silverlight/MVVM,通常您会使用转换器或只是将新的 R/O 属性添加到对象。
不确定在 knockout.js 中应该如何处理这种情况
如果你只是在寻找一个转换器,那么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>
你可以在这个小提琴中看到它