我正在编写一个角度应用程序,并开始喜欢“控制器为”语法。我喜欢“控制器为”的语法是我不必注入$ scope但是我没有看到任何方法知道何时运行没有$ destroy事件的清理代码。但是,在某些地方,我需要在删除控制器范围时进行一些清理。如果你注入$ scope就不会有问题,因为当删除范围时会触发$ destroy但是我希望尽可能避免注入范围。
当您使用“控制器作为”语法whitout注入$ scope时,是否可以为删除控制器时注册某种类型的侦听器?
以下是我想要清理的示例。我有一个消息总线,我可以为某些事件注册新的监听器。删除控制器后,我想从messagebus中取消注册。
controller('myController', function (messageBus) {
var vm = this;
vm.onNewMessage = function (message) {
console.log(message);
};
messageBus.on('NEW_MESSAGE', vm.onNewMessage);
//messageBus.off() - Don't know when to run this
});