淘汰赛将数据从 ajax 推送到 observableArray
knockout push data from ajax to observableArray
我想将数据从 ajax 推送到 knockout observableArray ,但它给我一个错误:
The argument passed when initializing an observable array must be an
array, or null, or 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);
}
});
});
据我所知,应该更改此行。
state = ko.observableArray([]);
至此
var state = ko.observableArray();
我能否建议您查看包含大量工作示例的文档:https://knockoutjs.com/documentation/observableArrays.html
首先,您的视图模型是所有程序构建的对象。该对象包含所有要显示的数据(作为可观察到的敲除 属性 "methods")和要接收的命令(函数)。因此,您需要定义视图模型以包含您的应用程序需要执行的所有操作:
var viewModel = {
//Bindings
state = ko.observableArray();
}
现在您可以写信给 viewModel.state()
:
如果数据是一个数组并且您不想跟踪对数据项的更改:
viewModel.state(data);
或一次推送一个:
data.foreach(function(el){ viewModel.state.push(el); });
如果您想跟踪每个项目属性的变化,您将需要使用第二种方法并将每个元素转换为一个由 ko.observable
组成的对象。
这是一个 ajax 范围的问题。
你可以使用 'var'.
像这样:
var state = ko.observableArray([]);
我想将数据从 ajax 推送到 knockout observableArray ,但它给我一个错误:
The argument passed when initializing an observable array must be an array, or null, or 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);
}
});
});
据我所知,应该更改此行。
state = ko.observableArray([]);
至此
var state = ko.observableArray();
我能否建议您查看包含大量工作示例的文档:https://knockoutjs.com/documentation/observableArrays.html
首先,您的视图模型是所有程序构建的对象。该对象包含所有要显示的数据(作为可观察到的敲除 属性 "methods")和要接收的命令(函数)。因此,您需要定义视图模型以包含您的应用程序需要执行的所有操作:
var viewModel = {
//Bindings
state = ko.observableArray();
}
现在您可以写信给 viewModel.state()
:
如果数据是一个数组并且您不想跟踪对数据项的更改:
viewModel.state(data);
或一次推送一个:
data.foreach(function(el){ viewModel.state.push(el); });
如果您想跟踪每个项目属性的变化,您将需要使用第二种方法并将每个元素转换为一个由 ko.observable
组成的对象。
这是一个 ajax 范围的问题。
你可以使用 'var'.
像这样:
var state = ko.observableArray([]);