我正在尝试通过ajax调用获取一个json对象,并将其放入 knockout 可观察中。
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() 函数调用内的控制台日志正确打印了预期值。也就是说,数据采用我绑定(bind)的 Oracle Jet 组件所期望的正确数组格式。
此代码位于 Knockout 组件 javascript 文件中,我在其他位置的 HTML 文件中将其用作 Knockout 组件的一部分。
在组件的 HTML 文件中,我使用 arnVal
填充 Oracle Jet 图表。
但图表永远不会填充从 getJSON
调用获取的更新的 arnVal
数据。
我做错了什么?
最佳答案
只需从 self.arnVal().push(...)
中删除多余的括号即可。
self.arnVal.push(data["metricValues"]);
目前,括号正在拆箱可观察数组并将新项目推送到底层 JavaScript 数组。这绕过了 knockout 的事件触发器。
关于javascript - 如何将异步调用返回的Json数据正确绑定(bind)到knockout observableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42981165/