knockout.js 如何使observable数组在可观察数组中的对象的属性更新时通知其依赖项?

qvtsj1bj  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(128)

我将下面的数组绑定到模板

function Customer(id, name){
   this.Id = ko.obserable(id);
   this.Name = ko.obserable(name);
}

var customer1 = new Customer(1, "a");
var customer2 = new Customer(2, "b");

var customers = [customer1, customer2];

var oa = ko.observableArray(customers);

oa.subscribe(function(newValues){
   //How to force trigger this when a customer property gets updated?
});

当我在视图上更新客户名称时,阵列具有更新的数据,但它不通知其订阅者。如何解决此问题并强制通知其订阅者?

lymnna71

lymnna711#

你可以使用computed值来自动跟踪值列表中的变化。你在计算函数中展开的每一个可观察值都将创建一个依赖关系。
唯一的缺点:您将不知道 * 是哪个 * 更改导致了更新。如果这是您需要的,您需要订阅单个Name可观察性。
下面是一个使用自定义等式比较器的示例,您也可以只让hash返回string,并在subscriber方法中手动解包oa
第一个

相关问题