2013-07-21 4 views
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(); 
  • Я хочу, чтобы удалить доступ к показам модели (vm.addressList()) от Person.addresses(). Как я могу это сделать?
  • Может ли мне помочь JayData или какая-либо другая библиотека?

ответ

0

Я из JayData. Является ли это сценарием мастер-детали, и ваши данные поступают из базы данных? Если да, то вы можете достичь его с JayData несколько строк кода, см этот пример: http://jaydata.org/examples/Knockout/DynamicQueryFilterNorthwind

1

Отвечая на мой собственный вопрос ...

Вместо того, чтобы хранить идентификаторы родственных моделей, я храню ссылки самих связанных моделей. Таким образом, вы можете переходить от одной модели к другой, без доступа к показам модели

Так

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

Полный пример here

Смежные вопросы