我想知道是否有人有关于在屏幕上填充多个视图模型的任何建议。我有:
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成功通话。
我希望我的问题清晰简洁。如果需要,请询问更多细节。
此致 菲尔
答案 0 :(得分:4)
我们目前通过在单个Ajax调用中将所有数据发送到我们的页面,然后应用ko.mapping
将数据映射到主视图模型上的视图模型来处理此问题。
我们开始时就像你一样进行两次调用,但我们认为最好减少正在进行的http请求的数量,这就是为什么我们将数据集合成一个单独的分层对象结构,并且它工作得很好。
这个问题和随后的答案包含了我们采取的方法的片段: Map JSON data to Knockout observableArray with specific view model type
答案 1 :(得分:3)
只要您没有注意到性能问题,我建议您单独拨打电话,因为这会使您的服务与您的演示文稿需求保持松散耦合。
但是,如果是一个性能问题,您可以让您的Web服务聚合数据并一次性返回。但是你会因此失去一点可维护性。