Я пишу легкое веб-приложение с помощью Knockout.js, но у меня много проблем с выполнением чего-то, что должно быть легко но я не могу понять, где я ошибаюсь. У меня есть ko.observableArray, и я заполняю его данными JSON с сервера REST php. Когда я добавляю или удаляю элементы из этого массива, пользовательский интерфейс обновляется в порядке. Я хочу, чтобы пользовательский интерфейс был обновлен, когда я редактирую элемент массива. Я читал, что элемент массива не наблюдается, поэтому я попытался сделать их наблюдаемыми, но все же он не работает. Вот код. (I omissed части я не считаю важным)Knockout.js: ObservableArrays element Observable Uncaught TypeError: Object [object global] не имеет метода 'disposeCallback'
function sectionViewModel(){
var self = this;
self.sections = ko.observableArray();
self.sectionToEdit = ko.observable();
//code to initialize self.sections
$.getJSON("sections", function(data){
for(var i = 0; i < data.length ; i++){
var id = ko.observable(data[i].id);
var nome = ko.observable(data[i].nome);
self.sections.push({id:id, nome:nome});
}
});
self.confirmEdit = function(){
$.ajax({
url: 'sections/' + self.sectionToEdit().id,
type: 'PUT',
data: self.sectionToEdit().nome,
});
}
};
var debug = new sectionViewModel();
ko.applyBindings(debug);
Этот код работает, если я не делаю для внутренней $ .getJSON, но с ним, я получаю следующее сообщение об ошибке: Object [объект глобальной] имеет нет метода 'disposeCallback' от knockout.js в момент, когда я запускаю функцию confirmEdit. Запрос PUT также не выполнен, и я понятия не имею, почему. Любая помощь действительно оценена, спасибо!