gpt4 book ai didi

javascript - knockout .js : ObservableArrays element Observable Uncaught TypeError: Object [object global] has no method 'disposeCallback'

转载 作者:行者123 更新时间:2023-11-28 20:11:21 25 4
gpt4 key购买 nike

我正在使用 Knockout.js 编写一个简单的网络应用程序,但我在完成一些本应简单的事情时遇到了很多麻烦,但我不知道我错在哪里。我有一个 ko.observableArray,我用来自 php REST 服务器的 JSON 数据填充它。当我从该数组中添加或删除项目时,UI 会正常更新。我也希望在编辑数组元素时更新 UI。我读到数组的元素是不可观察的,所以我尝试将它们设置为可观察的,但仍然不起作用。这是代码。 (我省略了我认为不重要的部分)

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 中执行 for 操作,则此代码有效,但使用它时,我会收到以下错误:对象[object global]没有来自knockout.js的“disposeCallback”方法在我触发确认编辑功能的那一刻。PUT 请求也没有执行,我不知道为什么。非常感谢任何帮助,谢谢!

最佳答案

因为 nome 是一个可观察的,所以你必须在你的函数中解开它:

self.confirmEdit = function(){
$.ajax({
url: 'sections/' + self.sectionToEdit().id,
type: 'PUT',
data: self.sectionToEdit().nome(),
});
}

否则,jQuery 将可观察对象视为对象映射,包括调用对象上的所有函数。

关于javascript - knockout .js : ObservableArrays element Observable Uncaught TypeError: Object [object global] has no method 'disposeCallback' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19848913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com