0

我只是在淘汰赛中站稳脚跟,在我拼凑一些可憎的代码之前,我想知道是否有人可以提供以下帮助:

我有一个组数组

[{
  "id": 1,
  "name" : "tekken characters",
  "members": [1, 3]
}, //etc]

和一个成员数组

[{ "id": 1, "name": "nina williams" }, {"id": 2, "name": "super mario"}, {"id": 3, "yoshi mitsu"}]

两者都通过单独的 API 调用返回。存在父子(一对多)关系。使用 Knockout.js 应用于此类数据的最佳模式是什么?

尽管我确实单独使用了每个数组,例如我有一个所有组的列表和一个所有成员的列表,但我还想要一个 groupMembers 列表。请注意,并非所有成员都属于每个组。这是我将 id 相互映射的计算值,还是最好的方法是什么?这些调用都是基于 ajax 的,所以时间很重要。

如果有人这样做了,或者知道处理这些关系/数据结构的好资源,那么分享它们会很有用。

4

1 回答 1

1

如果我理解正确,那么 KO 视图模型可能看起来像这样:

function viewModel() {
    var self = this;     
    self.groups = ko.observableArray([]);
    self.members = ko.observableArray([]);     

    self.addToGroups = function(data) {
        // Add a new group/groups to view model (e.g. with AJAX)
    };
    self.addToMembers = function(data) {
        // Add a new member/members to view model
    };
    self.membersInGroups = ko.computed(function() {
        // Do some logic like getting members in groups
    }, this);
}

然后我会为组和成员使用视图模型:

function groupViewModel(data) {
    var self = this;
    self.id = ko.observable(data.id);
    self.name = ko.observable(data.name);
    self.members = ko.observableArray(data.members);    
}

function memberViewModel(data) {
    var self = this;
    self.id = ko.observable(data.id);
    self.name = ko.observable(data.name);
}

查看小提琴:http: //jsfiddle.net/DcaP2/

于 2012-11-21T12:16:07.670 回答