使用 willDestroyElement 进行分离和拆除
您可以通过触发 willDestroyElement 钩子从 DOM 中删除组件元素。
语法
import Ember from 'ember';
export default Ember.Component.extend ({
...
willDestroyElement() {
//代码在这里
},
...
})
示例
下面给出的示例描述了 willDestroyElement 钩子的使用,该钩子从 DOM 中删除组件元素。创建一个名为 index 的控制器,并从 app/controller/ 打开文件以添加以下代码 −
import Ember from 'ember';
export default Ember.Controller.extend ({
showComponent: true,
laterCount: 0,
buttonText: Ember.computed('showComponent', function() {
let showing = Ember.get(this, 'showComponent');
if (showing) {
return 'Remove';
} else {
return 'Add';
}
}),
actions: {
toggleComponent() {
this.toggleProperty('showComponent');
},
updateLaterCount() {
Ember.set(this, 'laterCount', Ember.get(this, 'laterCount') + 1);
}
}
});
创建一个名为 post-action 的组件,该组件将在 app/components/ 下定义。
打开 post-action.js 文件并添加以下代码 −
import Ember from 'ember';
export default Ember.Component.extend ({
runLater: null,
didInsertElement() {
let timeout = Ember.run.later(this, function() {
Ember.Logger.log('fired this after 1 seconds...');
this.sendAction();
}, 500);
Ember.set(this, 'runLater', timeout);
},
willDestroyElement() {
Ember.run.cancel(Ember.get(this, 'runLater'));
}
});
现在使用以下代码打开组件模板文件 post-action.hbs −
<h2>Tutorialspoint</h2>
打开 index.hbs 文件并添加以下代码 −
<h5>Count for clicks: {{laterCount}}</h5>
<button {{action 'toggleComponent'}}>{{buttonText}}</button>
{{#if showComponent}}
{{post-action action="updateLaterCount"}}
{{/if}}
{{outlet}}
输出
运行 ember 服务器;您将收到以下输出 −
最初点击次数为 1。当您点击删除按钮时,它将删除文本 −
接下来,点击添加按钮,它将增加点击次数并显示文本 −

emberjs_component.html