观察 MyArray().length 敲出

Observe MyArray().length knock out

本文关键字:length 敲出 MyArray 观察      更新时间:2023-09-26

是否可以将可观察数组的长度存储在可观察变量中并将其绑定到视图中,如下所示?

self.MyArray = ko.observableArray([]);
self.MyArraylength = self.MyArray().length;
//Bind in view
self.Observelength = ko.observable(self.MyArraylength);

当我提醒 MyArray 长度时,它似乎更新正确,但无法让它在视图中更新?

因为 MyArrayLength 不可观测,所以当可观察量更新时它不会更新。您需要一个计算函数。

您应该具备:

self.MyArray = ko.observableArray([]);
// bind in view
self.Observelength = ko.computed(function(){
    return self.MyArray().length;
});

以下两个语句:

self.MyArraylength = self.MyArray().length;    
ko.observable(self.MyArraylength);

仅包含一个数字作为其值。不再引用原始数组或其长度。

您需要改为计算长度:

self.ObserveLength = function() {
    return self.MyArray().length;
};

或者,您可以subscribe数组上的更改,然后更新length

self.MyArray.subscribe(function() {
    self.MyArraylength = self.MyArray().length;
});