我對淘汰賽有些新穎,並且遇到了一些與觀測值有關的問題。這是一些淘汰賽我使用的配對縮小版本:KO計算重新計算但不更新用戶界面
var model;
function viewModel(data) {
var self = this;
self.favesData = ko.observableArray(data.User.Favorites);
self.splitRows = ko.computed(function() {
var i = 0;
var faveRows = [];
var size = 2;
while (i < self.favesData().length) {
faveRows.push(self.favesData().slice(i, i += size));
}
return faveRows;
});
self.refresh = (function (data) {
self.favesData(data.User.Favorites);
});
}
function onComplete(result) {
if (!model) {
model = new viewModel(result);
ko.applyBindings(new viewModel(result));
} else {
model.refresh(result);
}
}
<table class="table-main link" data-bind="foreach: splitRows">
<tr data-bind="foreach: $data">
<td>
<div class="link">
<a href="#" data-bind="text: $data.Name">
</a>
</div>
</td>
</tr>
</table>
我使用AJAX GET,它調用的onComplete。數據進來很好,所有的東西在初始負載上都很好。然後我用新的輸入調用相同的ajax函數,它開始正常工作 - 數據返回並且不同,刷新更新favesData,並且splitRows重新計算,但UI顯示永不改變。 不應該splitRows重新計算時更新綁定? 我很困惑如何將新數據傳遞給favesData可以更新觀察它的計算觀察值,但計算的觀察值不會更新UI。
哦,男人,魔鬼是在細節。謝謝! – withoutIf