2013-10-14 10 views
1

Существует не так много документации по полиморфным отношениям в Ember.js. Пока что единственное, что я мог найти, было в самом pull request. К сожалению, следующий пример не привел к созданию рабочего приложения. Вот что выглядит мои модели, как:Полиморфные отношения в Ember.js

Whistlr.Event = DS.Model.extend 
    eventable: DS.belongsTo 'eventable', 
    polymorphic: true 

Whistlr.Eventable = DS.Model.extend 
    events: DS.hasMany 'event' 

Whistlr.Organization = Whistlr.Eventable.extend 
    name: DS.attr() 

Полезная нагрузка выглядит следующим образом:

{ 
    "events": [ 
     { 
      "id": 1, 
      "eventable_id": 1, 
      "eventable_type": "organization" 
     } 
    ] 
} 

И тогда я пытаюсь рендеринга это в моем макете:

ul 
    each event in controller 
    li = event.eventable.name 

К сожалению, это приводит к список с множеством пустых li s. Каждый li отображается, но event.eventable.name возвращается обратно. Что-то не так с моим подходом? Как я могу отображать имя для каждого события?

UPDATE:

Когда я анализирую данные с Ember расширения Chrome, я вижу, что каждая запись для eventable равна нулю.

ответ

2

использование попытка 'eventable' ключ вместо 'eventable_id' и 'eventableType' вместо 'eventable_type' в полезной нагрузке:

{ 
    "events": [ 
     { 
      "id": 1, 
      "eventable": 1, 
      "eventableType": "organization" 
     } 
    ] 
} 

пример - http://jsbin.com/EGiZuL/1

+0

Он выдает эту ошибку: 'Ошибка: утверждение потерпело неудачу : Ошибка при загрузке маршрута: TypeError: factory undefined' – nullnullnull

+0

последняя редакция не вызывает ошибок. –

+0

Это вполне может быть. Я на самом деле использую Canary build прямо сейчас, и я все еще получаю эту ошибку, но я подозреваю, что это потому, что я неправильно обрабатываю псевдонимы. Я открыл [второй вопрос] (http://stackoverflow.com/questions/19371465/setting-an-polymorphic-alias-with-ember-data-1-0beta) о том, как использовать псевдоним Ember-Data 1.0Beta. – nullnullnull

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