[英]EmberJS Component - Run custom function after DOM has fully loaded
我正在努力完全掌握組件的生命周期。 我已經創建了一個組件,但是我需要自定義javascript函數才能在DOM完成后運行。 我已經遍歷了EmberJS Docs和Stackoverflow,但是遇到的任何文檔都沒有達到我的預期。
我的問題
我嘗試使用didInsertElement
和didRender
,但是在我的重復元素加載到DOM中之前,它們仍然會被調用。 在DOM完全呈現之后,我該如何避免讓我的Javascript運行。
我的嘗試
下面是一個使用alert
代替腳本的精簡和准系統示例。 理想的結果是在呈現DOM之后使該alert
出現,下面的示例在此警報之前發生。
import Component from '@ember/component';
export default Component.extend({
didRender() {
alert('didRender');
},
didInsertElement() {
alert('didInsertElement');
}
});
提前致謝。
假設您具有以下模板
{{#each this.items as |item|}}
<ItemComponent @item={{item}} />
{{/each}}
您想知道列表何時渲染?
將上述模板提取到組件中。
<ItemList @items={{this.items}} />
其中ItemList
被定義為
import Component from '@ember/component';
export default class ItemList extends {
didInsertElement() {
console.log('list was inserted');
}
}
這是代碼:
如果打開控制台,您將看到:
item 1 was inserted
item 2 was inserted
item 3 was inserted
item 4 was inserted
item 5 was inserted
list was inserted
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.