KnockoutJS使用Ajax填充多个视图模型的最佳实践

时间:2012-04-01 14:44:42

标签: ajax mapping knockout.js

我想知道是否有人有关于在屏幕上填充多个视图模型的任何建议。我有:

a)具有任务列表的视图模型

b)具有用户列表的视图模型

我在2 x ajax成功(单独的ajax调用)中填充这些内容,例如:

success: function (data) {
    masterVM.User = ko.mapping.fromJS(data, mapping);
    ko.applyBindings(masterVM); 
}

/* another ajax call: */
success: function (data) {
    masterVM.Task = ko.mapping.fromJS(data, mapping);
    ko.applyBindings(masterVM); 
}

目前正在调用每个ajax成功通话。

我希望我的问题清晰简洁。如果需要,请询问更多细节。

此致 菲尔

2 个答案:

答案 0 :(得分:4)

我们目前通过在单个Ajax调用中将所有数据发送到我们的页面,然后应用ko.mapping将数据映射到主视图模型上的视图模型来处理此问题。

我们开始时就像你一样进行两次调用,但我们认为最好减少正在进行的http请求的数量,这就是为什么我们将数据集合成一个单独的分层对象结构,并且它工作得很好。

这个问题和随后的答案包含了我们采取的方法的片段: Map JSON data to Knockout observableArray with specific view model type

答案 1 :(得分:3)

只要您没有注意到性能问题,我建议您单独拨打电话,因为这会使您的服务与您的演示文稿需求保持松散耦合。

但是,如果是一个性能问题,您可以让您的Web服务聚合数据并一次性返回。但是你会因此失去一点可维护性。