0

我通过首先存储相关模型的主键然后在运行时计算实际模型来映射两个相关模型。这会导致我的模型访问视图模型列表。有没有更好的方法来关联这些模型

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();
  • 我想从 Person.addresses() 中删除对视图模型 ( vm.addressList() ) 的访问。我怎样才能做到这一点?
  • JayData 或其他图书馆会帮助我吗?
4

2 回答 2

1

回答我自己的问题...

我没有存储相关模型的 id,而是存储了相关模型本身的引用。因此,您可以在不访问视图模型的情况下从一个模型转到另一个模型

所以

self.addressIdList = ko.observableArray();
self.addresses = ko.observableArray();

完整的例子在这里

于 2013-07-23T03:50:01.037 回答
0

我来自 JayData。这是一个主从场景,你的数据来自数据库吗?如果是,那么您可以使用 JayData 用几行代码来实现它,请参阅此示例:http: //jaydata.org/examples/Knockout/DynamicQueryFilterNorthwind

于 2013-07-22T09:14:11.037 回答