我只是在淘汰赛中脱颖而出,在我拼凑一些令人厌恶的代码之前,我想知道如果有人可以提供以下帮助:
我有一个组数组
[{
"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的,所以时间很重要。
如果有人这样做了,或者知道处理这些关系/数据结构的良好资源,那么分享它们会很有用。
答案 0 :(得分: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);
}