我想将数据从ajax推送到淘汰的observableArray,但这给我一个错误:
初始化可观察数组时传递的参数必须是 数组,或者为null,或者为undefined。
efine(['uiComponent', 'ko', 'jquery'], function (Component, ko, jquery) {
return Component.extend({
initialize: function () {
this._super();
/* State and cities */
this.selectCity();
},
selectCity: function () {
var myViewModel = {};
state = ko.observableArray([]);
jquery.ajax({
url: 'http://127.0.0.1/magento/hamechio/region.php',
type: "GET",
dataType: "json",
success: function(data) {
myViewModel = data;
state.push(data);
}
});
console.log(state);
}
});
});
答案 0 :(得分:2)
据我所知,此行应更改。
state = ko.observableArray([]);
对此
var state = ko.observableArray();
答案 1 :(得分:2)
这是ajax作用域查询。
您可以使用'var'。
像这样:
var state = ko.observableArray([]);
答案 2 :(得分:0)
我可以建议您浏览一下包含许多可用示例的文档:https://knockoutjs.com/documentation/observableArrays.html
首先,您的视图模型是构建所有程序的对象。该对象包含所有要显示的数据(作为可观察到的可观察属性“方法”)和要接收的命令(功能)。因此,您需要定义视图模型以包含应用程序需要做的所有事情:
var viewModel = {
//Bindings
state = ko.observableArray();
}
现在您可以写入viewModel.state()
:
如果数据是数组,并且您不想跟踪对数据项的更改:
viewModel.state(data);
或一次推入一个:
data.foreach(function(el){ viewModel.state.push(el); });
如果要跟踪对每个项目的属性的更改,则需要使用第二种方法,并将每个元素转换为由ko.observable
s组成的对象。