【发布时间】:2014-06-02 06:53:37
【问题描述】:
我正在使用 KnockoutJS 和映射插件来创建用户界面。当页面加载时,它立即调用:
$('document').ready ( function () {
$.getJSON(some-url, function (data) {
viewModel = new ViewModel(data);
ko.applyBindings(viewModel);
});
});
效果很好。 some-url 处的服务以以下形式的 JSON 值响应:
{ current: null
, ids: [0,1,2,3,4,5]
}
我在我的 ViewModel 类中创建了一个方法,它应该根据数组中的第一个 id 填充当前的 observable:
self.head = function () {
if (self.promptIds().length != 0) {
var nextId = _.head(self.promptIds());
self.promptIds(_.tail(self.promptIds()));
$.getJSON("some-url" + "/" + nextId, function (data) {
self.current = ko.mapping.fromJS(data);
});
}
}
请注意,我将self.current 设置为等于执行 ko.mapping 的结果。所以我几乎覆盖了之前的 observable 。这就解释了为什么我的绑定没有更新,即使 self.current 已定义。
那么我该如何更新viewModel.current observable?我想要的只是解析 ajax 查询的响应并使其成为子视图模型。
【问题讨论】:
标签: javascript knockout.js knockout-mapping-plugin