Ember.js渲染因渲染后修改而失败

时间:2017-07-10 12:55:49

标签: javascript ember.js

我正在开发一个非常简单的ember组件结构,并且我遇到了同样的错误:

Assertion Failed: You modified "pipeline.status" twice on <frontend@model:pipeline-instance::ember497:59636F5284D6CE0009000002> in a single render. It was rendered in "component:pipeline-manager" and modified in "component:pipeline-manager". This was unreliable and slow in Ember 1.x and is no longer supported. See https://github.com/emberjs/ember.js/issues/13948 for more details.

我已经删除了这个非常简单的代码的所有功能,并且我一直有断言错误。

pipeline-instance.js 模型:

export default DS.Model.extend({
  status: DS.belongsTo('status')
});

pipeline-manager.js 为空。

pipeline-manager.hbs 模板:

<div class="pipelines--show">
  <div class="row status">
    Current status: {{await pipeline.status.title}}
  </div>
</div>

的package.json

"devDependencies": {
  ...
  "ember-cli": "2.11.1",
  "ember-cli-app-version": "^2.0.0",
  ...
 }

似乎我设法摆脱错误的唯一方法是使用ember s --prod

1 个答案:

答案 0 :(得分:0)

ember-data@2.14.0中有known issue导致此问题。每当您在模板中引用相关模型的属性时,您都会看到有关失败断言的消息(例如上面的示例:pipeline.status.title)。运行npm list ember-data以确认您正在运行2.14.x

目前,我建议还原为ember-data@2.13.2 - 只需在package.json中指定2.13.2,如下所示:"ember-data": "2.13.2"。当发布新版ember-cli / ember-data来修复此问题时,您可以通过package.json更新ember init作为正常升级过程的一部分。

此问题的解决方案已经有Pull Request,所以我们希望它很快就能合并,以便我们升级。