2013-04-16 3 views
0

Я использую веб-службы для загрузки данных на клиентскую сторону. Для целей привязки мне нужно расширить данные, которые я получаю. То есть Я не хочу массировать все данные на стороне сервера.ko.observableArray и массивы данных JSON

Например, объект Trip { Id: "123", Status: "P" }

В HTML я связываю table к observableArray и хотите, чтобы отобразить "Ожидание" вместо "P". Я прихожу из Silverlight/MVVM и обычно вы используете конвертер или просто добавляете новое свойство R/O к объекту.

Не знаю, как этот сценарий должен быть обработан в knockout.js

ответ

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

Смежные вопросы