Javascript 在Knockout.js中异步应用绑定
我很难理解如何使用knockoutJS异步绑定级联Select2下拉字段 当要填充的数据在函数中是静态的时,代码可以很好地工作,但是当使用异步ajax调用时,代码不起作用,因为绑定是在收到响应之前执行的 由于我是一个knockout.js初学者,有人能引导我进入正确的方向或发现问题吗 击倒 构建数据 获取数据 buildData需要返回一个observable,以便在数据更改时自动更新绑定:Javascript 在Knockout.js中异步应用绑定,javascript,json,asynchronous,knockout.js,jquery-select2,Javascript,Json,Asynchronous,Knockout.js,Jquery Select2,我很难理解如何使用knockoutJS异步绑定级联Select2下拉字段 当要填充的数据在函数中是静态的时,代码可以很好地工作,但是当使用异步ajax调用时,代码不起作用,因为绑定是在收到响应之前执行的 由于我是一个knockout.js初学者,有人能引导我进入正确的方向或发现问题吗 击倒 构建数据 获取数据 buildData需要返回一个observable,以便在数据更改时自动更新绑定: function buildData() { var dataContainer = ko.obse
function buildData() {
var dataContainer = ko.observableArray([]);
getData().then(function(newData) {
console.log('step 4 - return result');
dataContainer(newData);
});
return dataContainer; // Initially empty array
};
不过,我个人会先在viewModel中定义数组,然后在中写入数组,然后引用它。如果您使用基于类/实例的方法,这样您就可以使用此。。。但我想这是品味的问题。谢谢你,这是一个非常有用的超级快速回复!你救了我的朋友!
function buildData() {
var gotData = getData();
return gotData.then(function() {
console.log('step 4 - return result');
returnData = gotData;
return returnData;
});
}
// Get all data from ajax call
function getData() {
var data = { 'action': 'get_data' };
var deferred = new jQuery.Deferred();
return jQuery.post(ajaxurl, data, function(response) {
// console.log(response);
console.log('step 1 - parse ajax data');
var obj = JSON.parse(response);
console.log('step 2 - process received data');
results = processData(obj);
}).done(function() {
console.log('step 3 - ajax parsing & processing data done');
console.log(results);
deferred.resolve(results);
return deferred;
}).fail(function() {
console.log('fail');
});
}
function buildData() {
var dataContainer = ko.observableArray([]);
getData().then(function(newData) {
console.log('step 4 - return result');
dataContainer(newData);
});
return dataContainer; // Initially empty array
};