2013-10-14 56 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:

当我检查与Chrome的灰烬扩展中的数据,我看到,对于eventable各条目为空。

回答

2

尝试使用 'eventable' 键,而不是在有效载荷 'eventable_id' 和而不是 'eventable_type' eventableType“:

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

例子 - http://jsbin.com/EGiZuL/1

+0

它抛出这个错误:'错误:断言失败:加载路由时出错:TypeError:工厂未定义' – nullnullnull

+0

最新版本不会引发错误。 –

+0

这很可能。我实际上正在使用Canary构建,而且我仍然遇到这个错误,但我怀疑这是因为我没有正确处理别名。我打开了关于如何用Ember-Data 1.0Beta进行别名的[第二个问题](http://stackoverflow.com/questions/19371465/setting-an-polymorphic-alias-with-ember-data-1-0beta)。 – nullnullnull