【问题标题】:Ember-data hasMany association not workingEmber-data hasMany 关联不起作用
【发布时间】:2013-11-05 20:15:03
【问题描述】:

我有几个模型设置如下:

WT.WorkoutPlan = DS.Model.extend({
   workouts: DS.hasMany('planWorkout'),
   name: DS.attr()
});

WT.PlanWorkout = DS.Model.extend({});

当我尝试使用以下 JSON 加载模型时,锻炼加载良好,plan.get('name'); 返回名称更正证明了这一点,但 plan.get('workouts') 始终有 0 个成员。有人知道为什么关联没有加载吗?

这是 JSON:

{
     "planWorkouts": [
         {
            "id": 991,
            "name": "Lower Body"
         }
     ],
     "workoutPlan": {
         "id": 343,
         "name": "male-20to39-fat-loss",
         "planWorkouts": [991]
     }
}

我正在使用 ember-data 1.0beta3

【问题讨论】:

  • 您可以尝试使用“计划锻炼”作为关键吗?

标签: ember.js ember-data


【解决方案1】:

这个

"workoutPlan": {
     "id": 343,
     "name": "male-20to39-fat-loss",
     "planWorkouts": [991]
 }

应该是

"workoutPlan": {
     "id": 343,
     "name": "male-20to39-fat-loss",
     "workouts": [991]
 }

aka 关键应该是锻炼,而不是 json 中的 planWorkouts

【讨论】:

  • 这似乎对我有用。在我的模板中仍然看不到锻炼,但 Ember 检查器正确显示了关联。
  • 任何阅读本文并使用夹具适配器的人,都应该制作您的 Ids 字符串。阅读:vinay.io/static/blog/2013/12_17.html
  • 您应该提交 PR 以在夹具适配器中进行字符串强制。
【解决方案2】:

workoutPlan 应该包含锻炼 ID,您也可以通过将“锻炼”添加到哈希中来侧载锻炼,记住:锻炼位于锻炼计划根哈希之外。

{
    "workoutPlan": {
    "id": 1,
    "name": "male-20to39-fat-loss"
    "workout_ids": [ 1 ]
  },

  "workouts": [
    { "id": 1, "body": "what a dumb post" }
  ]
}

【讨论】:

  • 我正确设置了侧载模型,但我的父模型中的键是 planWorkouts 而不是 workouts,它与模型名称匹配,而不是 hasmany 属性名称。
  • 另外 qrooel,为了您自己的乐趣和笑声,该格式在 1.0 中已更改。你不再做key_ids,见github.com/emberjs/data/blob/master/TRANSITION.md
猜你喜欢
  • 1970-01-01
  • 2012-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-24
  • 1970-01-01
相关资源
最近更新 更多