我有一个像这样的viewmodel,
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();
Run Code Online (Sandbox Code Playgroud)
我打印出这样的值,
<span data-bind="text: $root.Items().A"></span>
<span data-bind="text: $root.Items().B"></span>
<span data-bind="text: $root.Items().C"></span>
Run Code Online (Sandbox Code Playgroud)
它打印出A和B的值,但不打印C?
谢谢.
RP *_*yer 10
由于C最初本身不可观察,因此绑定不会知道在进行更改时需要更新.
要进行更新,您需要Items完全重置:
this.loadData = function() {
var existing = this.Items();
existing.C = 3;
this.Items(existing);
};
Run Code Online (Sandbox Code Playgroud)
或调用valueHasMutatedobservable 的函数,强制任何订阅者更新如下:
this.loadData = function() {
this.Items().C = 3;
this.Items.valueHasMutated();
};
Run Code Online (Sandbox Code Playgroud)