내 녹아웃 웹에서 계산 된 변수에 문제가 있습니다. 여기에 내 코드입니다 :계산 된 관측 가능 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);
};
}
그래서, 난 그냥 좌석 배열을 받고 나는 "선택"과 UI에 표시 할 배열의 각 객체에 필드를 추가 할 수 있습니다.
세션에 대한 정보를 아약스에서 읽고 원시 상태로 설정하고 업데이트 할 때 UI에 변경 사항이 표시되지 않습니다.
왜 그런가요? 그런 다음 UI를 업데이트하려면 어떻게해야합니까?
감사합니다.
편집
<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>
좌석은 뷰 모델 아니지만 ...이되어야 하는가?
seatsComplete' 아마 관찰해야 않는'의'selected' 속성입니다. 즉, 'seatsComplete [i] .selected (seatsComplete [i] .id == self.selectedSeatId())'등을 사용하여 설정해야합니다. – user3297291
죄송합니다. 작동하지 않습니다 ... –
보기를 표시 할 수 있습니까 (HTML)과 좌석의 뷰 모델? – user3297291