我正在映射两个相关模型,方法是将相关模型的主键存储在第一个模型中,然后在运行时计算实际模型。这导致我的模型访问视图模型列表。有没有更好的方法来联系这些模型
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();
- 我想从中删除对视图模型(vm.addressList())的访问Person.addresses()。我该怎么做
- JayData或其他库能帮我吗
回答我自己的问题。。。
我存储的不是相关模型的id,而是相关模型本身的引用。因此,您可以从一个模型转到另一个模型,而无需访问视图模型
所以
self.addressIdList = ko.observableArray();
self.addresses = ko.observableArray();
此处的完整示例
我来自JayData。这是一个主细节场景,而您的数据来自数据库吗?如果是,那么您可以使用JayData通过几行代码来实现它,请参见以下示例:http://jaydata.org/examples/Knockout/DynamicQueryFilterNorthwind