我正在尝试使用 knockoutjs-2.1.0 创建分页,但出现以下错误:
未捕获的类型错误:对象函数 h(){if(0return i||e(),aULa(h),k} 没有方法“切片”
我已经将问题缩小到这个:显然淘汰不喜欢在使用 ko.computed 创建的对象上调用“切片”方法。我的计算类型是这样的:
this.contactsToShow = ko.computed(function() {
// Represents a filtered list of contacts
// i.e., only those matching the "typeToShow" condition
var desiredType = this.typeToShow();
if (desiredType == "all") {
return this.allContacts();
}
return ko.utils.arrayFilter(this.allContacts(), function(aContact) {
return aContact.contactType == desiredType;
});
}, this);
当我设置“showCurrentPage”属性时,它会抛出一个错误,这里:
contactListView.showCurrentPage = ko.dependentObservable(function() {
if (this.currentPage() > this.totalPages()) {
this.currentPage(this.totalPages() - 1);
}
var startIndex = this.pageSize() * this.currentPage();
return this.contactsToShow.slice(startIndex, startIndex + this.pageSize());
}, contactListView);
但是,如果我在设置 showCurrentPage(allContacts 数组)时使用原始的 observableArray,它就可以工作。
你可以在这里找到 jsfiddle:http: //jsfiddle.net/mzalen/S74rJ/12/
我真的很感激关于这个问题的任何建议,因为它让我发疯。