【问题标题】:Polymorphic Relations in Ember.jsEmber.js 中的多态关系
【发布时间】:2013-10-15 09:02:10
【问题描述】:

在 Ember.js 中没有太多关于多态关系的文档。到目前为止,我唯一能找到的是pull request 本身。不幸的是,遵循该示例并没有导致应用程序正常工作。这是我的模型的样子:

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

不幸的是,这会导致列表中有许多空的lis。每个 li 都会被渲染,但 event.eventable.name 会返回空白。我的方法有问题吗?如何呈现每个事件的名称?

更新:

当我使用 Chrome 的 Ember 扩展程序检查数据时,我发现 eventable 的每个条目都是空的。

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    尝试在有效负载中使用“eventable”键而不是“eventable_id”和“eventableType”而不是“eventable_type”:

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

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

    【讨论】:

    • 它会抛出这个错误:Error: assertion failed: Error while loading route: TypeError: factory is undefined
    • 很可能。我现在实际上正在使用金丝雀版本,但我仍然收到此错误,但我怀疑这是因为我没有正确处理别名。我打开了一个second question,关于如何使用 Ember-Data 1.0Beta 进行别名。
    • 抱歉,我好像错过了您的编辑。一旦eventable_type 变为eventableType,一切都会按预期进行。谢谢,安东!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    相关资源
    最近更新 更多