2016-03-03 47 views
2

控制檯中刪除這些被棄用,而刷新我的網站,我總是得到一些不贊成這樣的控制檯上:如何對燼^ 2.0

A property of <Ember.OutletView:ember666> was modified inside the didUpdate hook. You should never change properties on components, services or models during didUpdate because it causes significant performance degradation. [deprecation id: ember-views.dispatching-modify-property] 

如何在灰燼中刪除這些被棄用的控制檯^ 2.0 我不使用Ember CLI。

+0

該錯誤是非常自我解釋。如果你問如何重構它,然後發佈你的「didUpdate」鉤子代碼,也許可以做不同的事情。 –

+0

是的但它工作正常......有一些棄用。 –

+0

是的,它現在可能會工作,但在未來它可能不會。 –

回答

2

通常這意味着,您需要在didReceiveAttrs方法中執行工作,而不是在didUpdate中執行。但是,你必須有它在didUpdate,你可以做這樣的事情:

didUpdate() { 
    Ember.run.scheduleOnce('afterRender', this, => { 
    // some code 
    }); 
} 

但它最有可能會做一些渲染兩次(但它已經做了兩次 - 因此棄用)。

0

羅曼解決方案對我來說效果不錯,除了一些語法問題。我需要爲子組件設置一個默認值。繼承人的代碼:

initDefValue: function() { 
    const valEmpty = Ember.isEmpty(this.get("value")); 
    if (valEmpty) { 
     Ember.run.scheduleOnce('afterRender', this,() => { 
      this.sendAction("initValue", this); 
     }); 
    } 
}.on("didReceiveAttrs"),