使用 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。当您点击删除按钮时,它将删除文本 −
接下来,点击添加按钮,它将增加点击次数并显示文本 −