我有一个像这样的视图模型,
function viewModel() {
this.loadData = function() {
this.Items().C = 3;
};
this.Items = ko.observable({ A: 1});
this.Items().B = 2;
}
var vm = new viewModel();
ko.applyBindings(vm);
vm.loadData();
我打印出这样的值,
<span data-bind="text: $root.Items().A"></span>
<span data-bind="text: $root.Items().B"></span>
<span data-bind="text: $root.Items().C"></span>
它打印出A和B的值,但不打印C?
感谢。
答案 0 :(得分:9)
由于C
本身最初不可观察,因此绑定不会知道在进行更改时需要更新。
要进行更新,您需要完全重置Items
:
this.loadData = function() {
var existing = this.Items();
existing.C = 3;
this.Items(existing);
};
或调用observable的valueHasMutated
函数,强制任何订阅者更新如下:
this.loadData = function() {
this.Items().C = 3;
this.Items.valueHasMutated();
};