angular移除事件绑定事件绑定_angular怎么移除事件监听

在一个controller代码块被释放掉的时候,我们通常要将一些监听的事件同时释放掉,正常的$scope是不需要我们来维护的。

当我们对$rootScope进行监听的时候,类似的全局变量或者说在其他地方依然有引用的变量是不会被释放掉的,而我们在controller中对rootScope做对应的事件监听,比如说stateChange等,每次controller初始化都要监听一次 。

移除监听事件的做法是,在rootScope.on方法上,接受它的返回值(是一个function),当scope将要destroy的时候,将返回的函数执行一,然后把对应的引用同时删掉即可。

类似代码如下

Javascript代码:var listener = $rootScope.$on('$stateChangeSuccess',

function(event, toState, toParams, fromState, fromParams){

......

});

$scope.$on('$destroy',function() {

listener();

listener = null;

})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Angular中,可以使用以下两种方法来监听事件: 1. 使用@Output装饰器和EventEmitter类来创建自事件。在子组件中,使用EventEmitter类来触发自事件,然后在父组件中使用@Output装饰器来监听事件。 例如,在子组件中义一个名为myEvent的自事件: ```typescript import { Component, EventEmitter, Output } from '@angular/core'; @Component({ selector: 'child-component', template: '<button (click)="onClick()">Click me!</button>' }) export class ChildComponent { @Output() myEvent = new EventEmitter<string>(); onClick() { this.myEvent.emit('Event triggered!'); } } ``` 然后在父组件中监听事件: ```typescript import { Component } from '@angular/core'; @Component({ selector: 'parent-component', template: '<child-component (myEvent)="onMyEvent($event)"></child-component>' }) export class ParentComponent { onMyEvent(event: string) { console.log(event); } } ``` 2. 使用RxJS中的Subject类来创建可观察对象,然后在组件中订阅该可观察对象以监听事件。 例如,在组件中义一个名为mySubject的Subject对象: ```typescript import { Component } from '@angular/core'; import { Subject } from 'rxjs'; @Component({ selector: 'my-component', template: '<button (click)="onClick()">Click me!</button>' }) export class MyComponent { mySubject = new Subject<string>(); onClick() { this.mySubject.next('Event triggered!'); } } ``` 然后在组件中订阅该可观察对象以监听事件: ```typescript import { Component } from '@angular/core'; import { MyComponent } from './my.component'; @Component({ selector: 'app-root', template: '<my-component></my-component>' }) export class AppComponent { constructor(private myComponent: MyComponent) { myComponent.mySubject.subscribe(event => console.log(event)); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值