【问题标题】:Ember 3.5 BelongsTo Relationships not ResolvingEmber 3.5 属于未解决的关系
【发布时间】:2018-11-09 12:33:01
【问题描述】:

我曾经有 emberjs 1.13,我升级到 3.5 我遇到了 belongsTo 关系的问题,我无法访问其中的这些数据。我的代码如下

型号

export default DS.Model.extend( {

  title: DS.attr( 'string' ),
  description: DS.attr( 'string' ),
  published: DS.attr( 'boolean' ),
  publishedAt: DS.attr( 'date' ),

  course: DS.belongsTo( 'course' ),
  author: DS.belongsTo( 'profile', { async: true } ),

  viewed: false,
  isNew: true,

}

在控制器中

this.get('model.published') working 
this.get('model.author.name') not working 

但同样的代码在 emberjs 1.13 上运行

使用 ember 数据 1.13

使用 ember 数据 3.5

【问题讨论】:

  • author 已经加载了吗?你能在旋转中复制吗?这看起来不错,应该可以工作。
  • 你能告诉我们你的路由model(),路由模板,路由控制器和作者模型吗?看起来作者还没有出现在商店中。也许删除异步?

标签: javascript ember.js ember-data


【解决方案1】:

这是从 1.13 直接升级到 3.5 的一次重大升级。

很多东西都变了。为了完全了解发生了什么变化以及为什么发生了变化,我强烈建议您每次升级次要或主要版本时阅读Ember release notes 中的每一个。超级有帮助。

很可能author 没有加载到商店中。检查您的路线的model()、网络请求和 Ember Inspector(如果已加载数据)。

如果加载,它可能是async: true。试试去掉?

这是 Ember 3.5 中的一个工作示例:

app/models/thing.js:

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

export default Model.extend({

  // Attributes
  title: attr('string'),
  description: attr('string'),
  published: attr('string'),
  publishedAt: attr('string'),

  // Relationships:
  // No need for async: true
  course: belongsTo('course'),
  author: belongsTo('author')

});

app/models/author.js:

import Model from 'ember-data/model';
import attr from 'ember-data/attr';

export default Model.extend({
  name: attr('string')
});

app/route/thing.js

import Route from '@ember/routing/route';

export default Route.extend({
  model(params) {
    // Assuming you use JSON API
    // Make sure `author` is included when fetching `thing`
    return this.store.query('thing', {
      include: 'author, course'
    }),
  }
});

app/controllers/thing.js

import Controller from '@ember/controller';

export default Controller.extend({
  init(){
    console.log(this.model.author.name)
  }
});

【讨论】:

  • 非常感谢您的详细回答。但这并不能解决我获取作者的问题。为了您的更多信息,我已经升级了 1.13->2.18->3.5,但问题也存在于 2.18 中。我在stackoverflow中再次写了一个详细的问题。如果您能看看stackoverflow.com/questions/53255803/…,我将不胜感激
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-18
  • 2017-04-10
  • 2016-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多