【问题标题】:ember-data relationships not workingember 数据关系不起作用
【发布时间】:2016-05-25 14:12:35
【问题描述】:

试图弄清楚如何使用关系,但它不起作用。

// Data
{
    "apps": {
        "-AFCH5-Kvkc_nfQxnpZ8": {
            "name": "Leap Day",
            "playLink": "https://play.google.com/store/apps/details?id=com.nitrome.leapday",
            "price": "0.00",
            "like": 0,
            "show": "-SFCH5-Kvkc_nfQxnpZ8",
            "provider": "-PFCH5-Kvkc_nfQxnpZ8",
            "imageUrl": "https://www.google.com/url?q=https://lh3.googleusercontent.com/5oR-jbrmKNWqdWQnwrDjPD2PJUJekGK_BUAQOjKD3GuJRTk2MLVzuU2HJ0wyY2BYPsdS%3Dw300-rw&sa=D&ust=1464126095843000&usg=AFQjCNH0RSH6_0bA_EUqnZaldtUxCH1fAw"
        },
        "-AFCH5-Kvkc_nfQxnpZ9": {
            "name": "Gangfort",
            "playLink": "https://www.google.com/url?q=https://play.google.com/store/apps/details?id%3Dcom.gangfort.game.android&sa=D&ust=1464126095844000&usg=AFQjCNFSTZ1p_uBvIHYw97c29XwJU3gEjw",
            "price": "1.99",
            "like": 0,
            "show": "-SFCH5-Kvkc_nfQxnpZ8",
            "provider": "-PFCH5-Kvkc_nfQxnpZ8",
            "imageUrl": "https://www.google.com/url?q=https://lh3.googleusercontent.com/DV5mFhDQ2ADEbiF0S4cxL313JDqRazy9et7Etky5WtH7gxsm9DvbHhb52N0MH1swgfzR%3Dw300-rw&sa=D&ust=1464126095844000&usg=AFQjCNEymzxjrdN8wwL4qN40w5i8i9MlPw"
        }
    },
    "shows": {
        "-SFCH5-Kvkc_nfQxnpZ8": {
            "number": 432,
            "name": "Google I/O Secrets Revealed",
            "date": "05/22/2016",
            "app": ["-AFCH5-Kvkc_nfQxnpZ8", "-AFCH5-Kvkc_nfQxnpZ9"],
            "url": "http://podnutz.com/aaa432/"
        }
    },
    "providers": {
        "-PFCH5-Kvkc_nfQxnpZ8": {
            "firstName": "Steve",
            "lastName": "McLaughlin",
            "nick": "D2d",
            "app": ["-AFCH5-Kvkc_nfQxnpZ8", "-AFCH5-Kvkc_nfQxnpZ9"]
        }
    }
}

这是应用模型 从 'ember-data/model' 导入模型; 从“ember-data/attr”导入属性; 从“ember-data/relationships”导入 { belongsTo };

export default Model.extend({
  name: attr('string'),
  playLink: attr('string'),
  price: attr('string'),
  like: attr('number'),
  show: belongsTo('show', {
    async: true
  }),
  provider: belongsTo('provider', {
    async: true
  }),
  imageUrl: attr('string')
});

这是展示模型

import Model from 'ember-data/model';
import attr from 'ember-data/attr';
import { hasMany } from 'ember-data/relationships';

export default Model.extend({
  number: attr('number'),
  name: attr('string'),
  date: attr('date'),
  apps: hasMany('app'),
  url: attr('string')
});

这是我的路线

import Ember from 'ember';

export default Ember.Route.extend({
  model() {
    return this.store.findAll('app');
  }
});

这是 ember 控制台的外观

所以问题是当我尝试访问模板中的显示对象时,它没有出现

{{#each model as |show|}}
    {{app.show.name}}
{{/each}}

更新

从标记的外观看来,这里似乎有什么东西在起作用

这是我登录 app.show 时的控制台

【问题讨论】:

  • 什么不起作用?
  • 谢谢,忘记添加那部分了。更新帖子
  • 请同时添加您的路由器,以便我们查看“模型”属性是如何设置的(model() 挂钩)。根据 Ember 控制台,似乎存在 show 实例,我的猜测是您的模型实际上是应用程序实例。试试这个:{{#if model.show}} {{model.show.name}} {{/if}}
  • 添加了原始帖子的路径

标签: ember.js ember-data


【解决方案1】:

看起来您的show 模型中的apps: hasMany('app') 引用正在覆盖您在shows 模型中定义的关系。

【讨论】:

    【解决方案2】:

    您没有遍历模板中的每个应用模型。 应该是这样的

    {{#each model as |app|}}
        {{app.show.name}}
    {{/each}}
    

    你的每个循环都是这样的{{#each model as |show|}}

    【讨论】:

    • 您要求我做的就是更改变量名。不知道这将如何解决我的问题
    • Show 被定义为应用模型中的单个实例,根据这样的定义,1 个应用最多有 1 个 show(belongTo vs. hasMany)
    【解决方案3】:

    试试这个:

    {{#each model as |app|}}
      {{#if app.show}}
       {{app.show.name}}
      {{/if}}
    {{else}}
       Loading apps...
    {{/each}}
    

    这里我建议使用ember-promise helpers,因为应用程序和节目之间的关系是异步的:

    {{#each model as |app}}
      {{#if (await app.show)}}
       {{get (await app.show) 'name'}}
      {{/if}}
    {{else}}
       Loading apps...
    {{/each}}
    

    【讨论】:

    • 已更新(有一个错字 + 我为 ember-promise-helpers 添加了一个部分)
    • 当您在我的帖子的第 3 行使用 {{app.show}} 而不是 {{app.show.name}} 时会发生什么?
    • 与上一个结果相同
    • 但是您是否看到 ID 或 {{if}} 从未到达?您可以使用调试助手喜欢 {{log}} 给我们更多信息吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多