У меня проблема с вычисленной переменной в моей сети с нокаутом. Вот мой код:Вычисленный наблюдаемый не обновляемый UI
function ViewModel() {
var self = this;
self.seatsRaw = ko.observableArray([]);
self.selectedSeatId = ko.observable();
self.session = ko.observable();
self.seats = ko.computed(function(){
var seatsComplete= self.seatsRaw().slice(0);
for (var i = 0; i < seatsComplete.length; i++) {
if (self.selectedSeatId()) {
seatsComplete[i].selected = seatsComplete[i].id == self.selectedSeatId();
} else if (self.session() && Number(self.session().seat) > 0) {
seatsComplete[i].selected = seatsComplete[i].id == self.sesion().seat;
} else {
seatsComplete[i].selected = false;
}
}
return seatsComplete;
});
self.selectSeat = function(data,event) {
self.selectedSeatId($(this).id);
};
}
Итак, я просто получить массив с местами, и я хочу, чтобы добавить поле для каждого объекта в массиве, чтобы показать в пользовательском интерфейсе как «выбрано».
Я прочитал от ajax информацию для сеанса и места raw, и когда я их обновляю, я не вижу никаких изменений в своем интерфейсе.
Почему это происходит? И затем, что мне нужно сделать, чтобы обновить свой интерфейс?
Спасибо!
EDIT
<ul class="seats" data-bind="foreach: seats">
<li data-bind="css: {selected: selected, 'non-selected': !selected}, click: $root.selectSeat">
<a href="#" data-bind="attr: {id: id}">
<img data-bind="attr: {src: baseUrl + 'img/seats/' + image}" />
<p data-bind="text: name"></p>
</a>
</li>
</ul>
Сиденье не ViewModel ... она должна быть?
Параметр 'selected' свойство в' seatsComplete' это, вероятно, должны быть наблюдаемыми. Это означает, что вы должны установить его, используя 'seatComplete [i] .selected (seatComplete [i] .id == self.selectedSeatId())' и т. Д. – user3297291
Извините, но это не работает ... –
Можете ли вы показать свое мнение (HTML) и вид модели? – user3297291