Ember.js:EmberObject.create在mixin内的计算属性上出错

问题描述 投票:1回答:1

我正在将余烬应用程序从3.9升级到3.10。

我开始出现错误。

断言失败:EmberObject.create不再支持定义计算属性。在调用create()之前,使用extend()或reopen()定义计算的属性。

我不确定100%,但是经过一番追踪之后,这段代码似乎导致了此错误(此mixin中的计算属性)。

import Mixin from '@ember/object/mixin';
import { get, set, computed } from '@ember/object';
import { inject as service } from '@ember/service';
import DS from 'ember-data';

const { PromiseArray } = DS;

export default Mixin.create({
  ajax: service(),
  intl: service(),

  patientAnalysis: computed(function() {
    return this.getPatientAnalysis();
  }),

  getPatientAnalysis() {
    let _this = this;

    let patient = this.patientModel || this.patient;
    let intl = this.intl;

    if (get(patient, 'id')) {
      return PromiseArray.create({
        promise: new Promise(function(resolve, reject) {
          let url = `/analyses/patient/${patient.id}`;
          _this
            .get('ajax')
            .request(url)
            .then(json => {
              json.map(a => {
                set(a, 'statusIntlName', intl.t(`status.${a.statusId}`));
              });
              resolve(json);
            }, reject);
        })
      });
    }
  }

此混入文件正在导入并在另一个组件中使用,就像这样

import Analyses from 'ui/mixins/components/patient/analyses';
[...]
export default Component.extend(Analyses, {

我已经阅读了一些有关此特定错误的线程,例如this,但是我无法确切地知道如何使它起作用。我什至不确定为什么从升级到3.10版本时会出现此错误,因为在该版本中似乎并未弃用或删除此错误。

我尝试将余烬作为示例从余烬doc重新编写,但没有成功。

[如果有人可以帮助我弄清楚到底发生了什么以及如何解决,将不胜感激。

ember.js
1个回答
0
投票

[如果有人发现这个线程有一个常见问题,那么就会发现此错误是由ember-cp-validations文件中使用的npm软件包model.js引起的。

已经报告了余烬3.10错误here

我无法使建议的修复程序起作用,但是升级到3.11修复了该问题。

© www.soinside.com 2019 - 2024. All rights reserved.