观察MyArray()。长度敲出

时间:2015-06-18 17:26:50

标签: javascript knockout.js

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

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

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

2 个答案:

答案 0 :(得分:2)

因为MyArrayLength不可观察,所以当observable执行时它不会更新。你需要一个计算函数。

你应该:

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

答案 1 :(得分:0)

以下两个陈述:

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;
});