2015-06-18 70 views
0

是否有可能将长度存储在可观察变量的可观察数组中并将其绑定到视图,如下所示?观察MyArray()。长度敲出

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

当我警告MyArray长度它似乎更新正确,但不能得到它在视图中更新?

回答

2

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

你应该有:

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

Arhh是的,是有道理的THX很多! – user3116167

+0

固定长度检查 – dfperry

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