knockoutjs-2.1.0 を使用してページネーションを作成しようとしていますが、次のエラーが発生します。
キャッチされていない TypeError: オブジェクト関数 h(){if(0return i||e(),aULa(h),k} にはメソッド 'slice' がありません
問題を次のように絞り込みました。どうやらノックアウトは、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/
この問題について何かアドバイスがあれば、本当に感謝しています。