相关模型的最佳方式

时间:2013-07-21 05:34:34

标签: knockout.js jaydata

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

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

2 个答案:

答案 0 :(得分:1)

回答我自己的问题......

我存储相关模型本身的引用,而不是存储相关模型的id。因此,您可以从一个模型转到另一个模型而无需访问视图模型

所以

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

完整示例here

答案 1 :(得分:0)

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