2013-09-03 4 views
0

Я использую Ember Data 1.0 (beta 1) и немного смущен поведением по умолчанию ассоциаций в ED.Ember Данные: Автоматически устанавливать принадлежность к ассоциации

Предположит Book модели, которая имеет много (hasMany) chapters с каждым chapter, принадлежащим (belongsTo) книги. Мое предположение состояло в том, что экземпляры свойства chapters книги автоматически будут иметь ссылку на экземпляр книги через их ассоциацию belongsTo, но это, похоже, не так. Действительно ли это поведение по умолчанию в Ember Data или я что-то не замечаю?

Если это действительно поведение по умолчанию, означает ли это, что мне нужно создать собственный сериализатор, чтобы выполнить это?

ответ

4

Никакие данные ember не будут делать это для вас, но этого должно быть возможно. В обоих случаях данные ember-данные будут устранять эти свойства. (В предыдущих версиях вы могли настроить отображение так что те будут встроены, но вы больше не можете сделать это) В вашем примере вы бы следующее:

App.Book = DS.Model.extend({ 
    chapters: DS.hasMany('Chapter') 
}); 

App.Chapter= DS.Model.extend({ 
    book: DS.belongsTo('Book') 
}); 

После того как эти настройки Эмбер-данные по умолчанию будут выглядеть для данных структурированных так:

{ 
    "book": { 
     "id": "1" 
     "chapters": ["1", "2", "3"] 
    }, 

    "chapters": [ 
     { 
      "id": "1", 
      "book": "1" 
     }, 
     { 
      "id": "2", 
      "book": "1" 
     }, 
     { 
      "id": "3", 
      "book": "1" 
     } 
    ] 
} 

Если данные не в таком формате, и вы не можете изменить его, то вы можете расширить методы extractSingle или extractArray на сериализаторе для этого типа. В нижней части этого link вы можете найти дополнительную информацию об этом. Также помните, что он ищет его в camelcase, поэтому вам также может потребоваться нормализовать json-объект.

+0

Вы говорите, что как только данные находятся в этом формате, тогда 'chapter.get ('book')' должен автоматически разрешаться для записи книги? Или что данные должны выглядеть так, то я могу вручную связать записи? – onions

+0

Если данные выглядят так, то chapter.get ('book') должен вернуть объект книги. Вам не нужно ничего вручную связывать. – Rob

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