приведенный ниже код работает нормально, когда я вызываю его в первый раз, однако во втором вызове gridviewmodel становится беспорядочным, и все данные становятся избыточными
$.ajax({
url: 'rest service uri',
type: 'GET',
data: parameters,
dataType: 'json',
crossDomain: true,
success: function (data) {
function gridviewModel() {
var self = this;
self.items = ko.mapping.fromJS(data);
self.columns = [
new column("Name", "name", "Asc"),
new column("URL", "name", "Asc"),
new column("Embargo Date", "name", "Asc"),
new column("Status", "name", "Asc"),
new column("Reviewer Name", "name", "Asc"),
new column("Approver Name", "name", "Asc")
];
};
ko.applyBindings(new gridviewModel());
}
Я попытался очистить наблюдаемый массив с помощью removeAll (), но у меня это не сработало.
Любая идея?
Просто для любого, кто может столкнуться с этой проблемой в будущем, мне удалось исправить ее, вызвав ko.mapping.fromJS (data, gridviewModel.items) в плагине сопоставления Knockout. Полный код
var gridviewModel = {
items: ko.mapping.fromJS([]),
columns: [
new column("Name", "name", "Asc"),
new column("URL", "name", "Asc"),
new column("Embargo Date", "name", "Asc"),
new column("Status", "name", "Asc"),
new column("Reviewer Name", "name", "Asc"),
new column("Approver Name", "name", "Asc")
]
};
$(function () {
ko.applyBindings(gridviewModel, document.getElementById("wip"));
});
Надеюсь, это решит другие проблемы.