【发布时间】:2014-07-25 20:28:27
【问题描述】:
我正在尝试使用 ko.mapping 将数据转换为视图模型。结果来自对 Web 服务的异步调用。
简单视图:
<div data-bind="with: myData">
<div data-bind="text: mapWidth"></div>
<div data-bind="text: mapHeight"></div>
<div data-bind="foreach: priceRanges">
<div data-bind="text: title"></div>
</div>
并且视图模型如下:
var ViewModel = function() {
var self = this;
self.myData = null;
var data = {
action: 'GetPricePoints',
type: 'who cares'
};
$.ajax({
url: 'http://cdt.lotamore.com/api/imap',
data: { "": JSON.stringify(data) },
//async: false, // works!
async: true, // doesn't work!!!!!
type: 'post'
})
.done(function (data) {
self.myData = ko.mapping.fromJS(data);
})
.error(function (data) {
alertError(data);
})
.always(function () {
});
};
当我同步运行它时工作正常。但是,当我异步运行它时,它不会更新我的视图模型中的myData。
我在这里创建了一个小提琴: http://jsfiddle.net/jgergen/jF9pm/20/
我真的不想进行阻塞 UI 线程的 ajax 调用! 我在这里做错了什么?
谢谢, 吉姆
【问题讨论】:
标签: ajax knockout.js knockout-mapping-plugin