Javascript 如何将异步调用返回的Json数据正确绑定到敲除ObservalArray
我试图通过一个ajax调用获取一个json对象,并将其放入一个敲除可观察对象中Javascript 如何将异步调用返回的Json数据正确绑定到敲除ObservalArray,javascript,jquery,json,knockout.js,oracle-jet,Javascript,Jquery,Json,Knockout.js,Oracle Jet,我试图通过一个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"]);
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组件所期望的正确格式
这段代码位于敲除组件javascript文件中,我在其他地方的HTML文件中使用它作为敲除组件的一部分。
在组件的HTML文件中,我使用arnVal
填充Oracle Jet图表
但是,图表永远不会填充从getJSON
调用获得的更新的arnVal
数据
我做错了什么?只需从
self.arnVal().push(…)
中删除额外的参数即可
目前,paren正在解除可观察数组的绑定,并将新项推送到底层javascript数组。这将绕过敲除的事件触发器。只需从
self.arnVal().push(…)中删除额外的参数即可。
目前,paren正在解除可观察数组的绑定,并将新项推送到底层javascript数组。这将绕过敲除的事件触发器。删除此处的括号:
self.arnVal().push(data["metricValues"]);
//^^ here
请参见规范:
var myObservableArray=ko.observableArray();//最初是一个空数组
myObservableArray.push('Some value');//添加值并通知观察者
原因是
self.arnVal
是一个可观察的数组,而self.arnVal()
是一个简单的数组(它没有通知功能)。删除此处的括号:
self.arnVal().push(data["metricValues"]);
//^^ here
请参见规范:
var myObservableArray=ko.observableArray();//最初是一个空数组
myObservableArray.push('Some value');//添加值并通知观察者
原因是self.arnVal
是一个可观察的数组,而self.arnVal()
是一个简单数组(没有通知功能)