在knockout.js中,可观察函数未更新

在knockout.js中,可观察函数未更新,knockout.js,Knockout.js,参考我的JSFIDLE可能最容易理解我的问题 在这里,前两个div最初正确地显示了“images”可观察数组中的对象数。但当点击“删除图像”时,只有第一个div的值更新 这两个div的区别是。第一种方法直接绑定数据: <div data-bind="text: images().length"></div> 我不明白为什么第一个div更新了,第二个没有-有人能解释一下吗?我一直认为,第二个应根据文件中的此类语言进行更新: 这就是计算出的可观测值——这些函数 依赖于一个

参考我的JSFIDLE可能最容易理解我的问题

在这里,前两个div最初正确地显示了“images”可观察数组中的对象数。但当点击“删除图像”时,只有第一个div的值更新

这两个div的区别是。第一种方法直接绑定数据:

<div data-bind="text: images().length"></div>
我不明白为什么第一个div更新了,第二个没有-有人能解释一下吗?我一直认为,第二个应根据文件中的此类语言进行更新:

这就是计算出的可观测值——这些函数 依赖于一个或多个其他观测值,并将自动 每当这些依赖项中的任何一个发生更改时更新

您正在查看:如果要基于其他可观察对象创建可观察对象,则需要计算可观察对象(
ko.computed
):

因此,将您的
imageScont
更改为
ko.computed

self.imagesCount = ko.computed(function(){ return self.images().length; });
演示。

计算的可观测值是依赖于一个或多个其他可观测值的函数,并将在这些依赖项中的任何一个发生变化时自动更新


它必须是一个计算出的可观测函数,看一看
self.images = ko.observableArray([img1,img2]);
self.imagesCount = ko.observable(self.images().length);
self.imagesCount = ko.computed(function(){ return self.images().length; });
self.imagesCount = ko.computed(function() {
 return self.images().length;
});