使用Ember.2.1.0-beta4

我在子组件的“didReceiveAttrs”触发的函数中得到“ember-views.render-double-modify”。

我跟踪了触发错误的this.set('_columns', columns)语句。但是,这是AFAIK,这是第一次修改属性。

为了调试它,我为修改后的属性创建了一个观察器,并在其中放置了一个断点。但是,观察者仅被调用一次,并且错误仍然存​​在,因此看起来这是第一个调用。

我应该如何调试-这是Ember错误,还是对错误中未清除的属性设置有其他限制?请注意,该属性在组件的模板中使用。该属性还用于其他计算出的属性(例如[email protected]_columns.[])。

最佳答案

为了后代的缘故,在我的情况下,答案是:模板中使用了_columns。因此,对于要调用的子组件的didReceiveAttrs,已经使用了_columns的先前值。

错误消息有点误导,但是我认为,一旦开始渲染,就无法更改属性,除非完成。如有必要,请使用Ember.run.scheduleOnce('afterRender', ...)

10-01 04:49