我试图通过ajax调用获取json对象,并将其放入可观察到的淘汰赛中。
var self = this;
this.arnVal = ko.observableArray([]);
var promise = $.getJSON('../../url/to/my/api');
promise.done(function(data) {
console.log(data);
console.log(data["metricValues"]);
self.arnVal().push(data["metricValues"]);
console.log(self.arnVal());
});
promise.done()
函数调用中的控制台日志可以正确打印期望值。也就是说,数据采用与之绑定的Oracle Jet组件所期望的正确数组格式。这段代码位于Knockout组件的javascript文件中,我正在其他地方的HTML文件中使用它作为Knockout组件的一部分。
在组件的HTML文件中,我正在使用
arnVal
填充Oracle Jet图表。但是,该图表永远不会填充通过
arnVal
调用获得的更新的getJSON
数据。我究竟做错了什么?
最佳答案
只需从self.arnVal().push(...)
中删除多余的括号。
self.arnVal.push(data["metricValues"]);
当前,paren正在将可观察数组拆箱并将新项目推送到基础javascript数组。这绕过了淘汰赛的事件触发器。
关于javascript - 如何将异步调用返回的Json数据正确绑定(bind)到 knockout 的ObservableArray,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42981165/