другой вопрос для нокаута.Knockout создать массив in viewmodel
У меня есть страница, в которой желательно использовать серверный пейджинг. Я хочу добиться этого, используя нокаут.
I Создайте модель с использованием плагина отображения и добавьте множество функций.
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» не инициализируется. Поэтому обновленный вариант с «если (TypeOf self.requestData =!„не определено“)»
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);
}
}
});
};
Что должен я делаю для обновления массива поискового вызова при получении новых данных?
Виды считает
UPDATE: Помимо моего кода, Что лучший/самый простой вариант, чтобы создать наблюдаемый массив Thats depandant из PageNumber?
Хороший момент (извините за ошибку начинающих), но тем не менее self.Page вычислено в зависимости от 2 наблюдаемых. Но после обновления этих наблюдаемых self.Page не запускается для обновления. –
Остальная часть того, что у вас есть, выглядит нормально, но, вероятно, что-то я пропустил. Можете ли вы опубликовать jsfiddle, и я помогу ему работать –