0
角度コンポーネントが破棄されたときにドキュメントのクリックリスナを取り除くにはどうすればよいですか?角度コンポーネントでクリックリスナーの登録を解除するにはどうすればよいですか?
簡素化されたデモコード:
<div ng-app="app">
<div ng-controller="TestingCtrl as vm">
<my-component ng-if="vm.showComponent"></my-component>
<br><br><br>
<button ng-click="vm.setShowState(false)">
Destroy component
</button>
</div>
</div>
Javascipt:
angular.module('app', [])
.controller('TestingCtrl', function TestingCtrl() {
this.showComponent = true;
this.setShowState = function(state) {
this.showComponent = state;
}
})
.component('myComponent', {
bindings: {
name: '@'
},
template: 'myComponent',
controller: function ($document) {
var listener;
this.$onInit = function() {
listener = $document.on('click', function() {
console.log('You clicked on the document');
});
}
this.$onDestroy = function() {
console.log('$onDestory triggered');
$document.off('click', listener);
}
}
});
"コンポーネントを破壊する" ボタンをクリックするとNG-場合に、コンポーネントがDOM(から削除されます)、$ onDestroyがトリガーされます。私は$ onDestroyにクリックイベントの登録を抹消したいが、何も起こらない。