【问题标题】:Emberjs Many-to-one Unidirectional RelationshipEmberjs 多对一单向关系
【发布时间】:2013-03-06 20:24:49
【问题描述】:

Emberjs 是否支持单向关系?考虑一下我想用三个模型存储有关食谱的信息:

  • Ingredient
    • 始终存在。给出namedescription
    • 没有任何东西“拥有”一种成分,它们也不应该在新引用时被复制,或者在引用被破坏时被破坏。他们只是
  • IngredientAddition
    • 由一个 Ingredient 和添加成分的时间/谁和数量的信息组成
    • 许多IngredientAddition 对象可以使用相同的成分。
  • Recipe
    • 由许多 IngredientAddition 对象和辅助信息组成。

据我了解,我的模型如下所示:

App.Ingredient = DS.Model.extend({
  name: DS.attr('string'),
  desc: DS.attr('string'),
});
App.IngredientAddition = DS.Model.extend({
  how:  DS.attr('string'),
  qty:  DS.attr('string'),
  recipe: DS.belongsTo('App.Recipe'),
});
App.Recipe = DS.Model.extend({
  desc: DS.attr('string'),
  ingredients: DS.hasMany('App.IngredientAddition'),
});

但是,这并没有捕捉到IngredientAdditionIngredient 之间的关系。 DS.hasMany 似乎不合适,因为每个 IngredientAddition 都只有一个 IngredientDS.belongsTo 不合适,因为 Ingredient 的生命周期不是由 IngredientAddition 的存在(或不存在)决定的。

如何获取这些信息?我查看了ember-data 源,除了hasManybelongsTo,我找不到任何关系类型。

【问题讨论】:

    标签: model ember.js relationship ember-data


    【解决方案1】:

    我想你想要IngredientAddition 上的belongsTo 关系。

    App.IngredientAddition = DS.Model.extend({
      how:  DS.attr('string'),
      qty:  DS.attr('string'),
      ingredient: DS.belongsTo('App.Ingredient'),
      recipe: DS.belongsTo('App.Recipe'),
    });
    

    这样,IngredientAddition 有一个底层的ingredient_id 指向相关的IngredientIngredient“拥有”IngredientAddition 的语义很奇怪,但这是产生您所描述的关系的方式。

    【讨论】:

    • 从 Ember 如何管理引用来看,IngredientAddition 对象似乎不会在 Ingredient 更改时更新。绑定看起来像是单向的。
    猜你喜欢
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多