我通过在第一个模型中存储相关模型的主键,然后在运行时计算实际模型来映射两个相关模型。这导致我的模型访问视图模型列表。有没有更好的方法来关联这些模型
function Address(data){
this.id = data.id;
}
function Person(data){
var self = this;
self.addressIdList = ko.observableArray();
this.addresses = ko.computed(function(){
return _.filter(_.map(self.addressIdList(), function(id){
return _.find(vm.addressList(), function(a){
return a.id == id;
});
}),function(item){ return typeof item != 'undefined';});
});
}
function ViewModel(){
this.personList = ko.observableArray();
this.addressList = ko.observableArray();
}
var vm = new ViewModel();
答案 0 :(得分:1)
回答我自己的问题......
我存储相关模型本身的引用,而不是存储相关模型的id。因此,您可以从一个模型转到另一个模型而无需访问视图模型
所以
self.addressIdList = ko.observableArray();
self.addresses = ko.observableArray();
完整示例here
答案 1 :(得分:0)
我来自JayData。它是一个主要细节场景,您的数据来自数据库吗? 如果是,那么您可以使用几行代码使用JayData实现它,请参阅此示例: http://jaydata.org/examples/Knockout/DynamicQueryFilterNorthwind