javascript - 如何将异步调用返回的Json数据正确绑定(bind)到knockout observableArray

标签 javascript jquery json knockout.js oracle-jet

我正在尝试通过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/

相关文章:

javascript - 简单而丑陋 - 如何改变 div 位置?

javascript - 无法通过将文件拖放到按钮外的区域来选择文件,但仅在使用 Shadow DOM 时才在输入内

Javascript - 如何从对象数组中删除覆盖/包装对象

javascript - 如何在使用jquery隐藏的表中显示带有类名的下一行

javascript - 如何添加一个类,该类会递增到使用 jquery 附加的元素

sql-server - 解析 SQL Server 集成服务包中的 JSON 数据?

javascript - 如何判断3个html页面( Pane )是否完全刷新?

javascript - jQuery UI Snappable 不返回仅带有 SnapMode 集的内部快照

asp.net-mvc - AJAX错误处理

php - 如何使用 Ajax 和 json 从 mysql 中填充选择