Knockout создать массив в viewmodel

еще один нокаут-вопрос.

У меня есть страница, на которой желательно использовать пейджинг на сервере. Я хочу добиться этого с помощью нокаута.

Я создаю модель представления, используя маппинг и добавив множество функций.

        var jsonModel = '@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(this.Model, new Newtonsoft.Json.Converters.IsoDateTimeConverter()))';
        myViewModel = ko.mapping.fromJSON(jsonModel, {}, new ViewModel());
        ko.applyBindings(myViewModel);

Сначала я реализовал вычисляемую наблюдаемую. Но это дало ошибку, потому что «requestData» не инициализирован. поэтому обновленный вариант с 'if (typeof self.requestData! =' undefined ')'

function ViewModel() {
var self = this;
//---- Return PageNumbers
self.Paging = ko.computed(function () {
    if (typeof self.requestData != 'undefined') {
        if (self.requestData.settings.pageNumber() <= 5) {
            return ko.utils.range(1, 11);
        }
        if (self.requestData.settings.pageNumber() + 5 > self.requestData.settings.nbrOfPages()) {
            return ko.utils.range(self.requestData.settings.nbrOfPages() - 11, self.requestData.settings.nbrOfPages());
        }
        return ko.utils.range(self.requestData.settings.pageNumber() - 5, self.requestData.settings.pageNumber() + 5);
    };
    return ko.utils.range(1, 11);
});

массив должен быть обновлен, когда я делаю вызов ajaxrequest:

self.changePage = function(pageNumber) {
    self.Paging = ko.utils.range(pageNumber -1 > 0 ?)
    myViewModel.requestData.settings.pageNumber = pageNumber;
    $.ajax({
        type: "post",
        contentType: "application/json",
        url: "../Refund/FilterPageSortingChange",
        data: ko.toJSON(self.requestData),
        error: function (xhr, status, error) {
            baseShowError("Server Error", "Error changing page");
        },
        success: function (response) {
            var receivedResponse = JSON.parse(response);
            if (receivedResponse.Success) {
                ko.mapping.fromJS(receivedResponse.Result, {}, self);
            } else {
                baseShowError("Page not found", receivedResponse.message);
            }
        }
    });
};

Что я должен сделать для обновления массива подкачки при получении новых данных?

С наилучшими пожеланиями

ОБНОВЛЕНИЕ: Помимо моего кода, какой самый лучший / самый простой вариант для создания наблюдаемого массива, который является зависимым от pageNumber?

Ответы на вопрос(1)

Ваш ответ на вопрос