我有一个模型类,它附加了一些函数(方法)。当我查看函数之外的可观察数组的长度时,长度会正确返回。但是当我查看模型类的函数内的 observablearray 时,它总是返回 0。但是如果我通过函数内的索引访问 observablearray 内的项目,它会返回正确的项目。为什么长度总是0?
function ModelView(data) {
var self = this;
self.items= ko.observableArray(data.items);
var test = self.items().length; //shows correct number
self.EditRule = function (product) {
for(var i=0; i<self.items().length; i++)
//dosuff but self.items().length is always 0
}
}
我通过在视图模型中添加一个附加属性找到了解决方法,如下所示:
self.itemslength = ko.observable(self.items().length);
显然我的实际问题要复杂得多,但循环正在将项目与传入的参数进行比较,以确保某些东西是有效的。self.items 基本上是一个主列表。