我对淘汰赛有些新颖,并且遇到了一些与观测值有关的问题。这是一些淘汰赛我使用的配对缩小版本: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