夺命雷公狗—angularjs—18—angularjs的事件

本文介绍了Angular框架中的事件机制,包括事件的发布与监听方法,如$emit()、$broadcast()和$on()的使用方式,并详细解释了事件对象的属性及其应用场景。

对于一款前端框架,提起事件,很容易让人联想到DOM事件,比如说鼠标点击以及页面滚动等。但是我们这里说的angular中的事件和DOM事件并不是一个东西。

事件的发布

    我们可以通过 $emit() 

    以及 $broadcast() 来发布事件

    $emit(name, args)

      name 发布的事件名称
      args 会作为对象传递到事件的监听器中
      $emit() 发布的事件,会从子作用域冒泡到父作用域,产生事件的作用域之上的所有作用域都会收到这个事件的通知。

    $broadcast(name, args)

      同 $emit 的参数一直,name 作为事件的名字,args 作为监听器接受 的参数。使用该方法事件的传播方向是从上至下,即从父作用域到子作用域。

事件的监听

    事件发布了,我们要注册监听事件的服务,才会对事件进行响应
    可以通过 $on() 方法来注册事件监听事件。

    $scope.$on(name, listenerFn)

      当以 name 为事件名的事件被促发之后,listenerFn 事件就会被执行。
      $on() 返回一个反注册函数,可以用其来取消监听器。

事件对象

    所有的事件监听器第一个参数都代表了事件对象,该对象有以下属性:
    targetScope 作用域对象,发送事件的作用域
    currentScope :当前处理事件的作用域
    name: 当前事件的事件的名称
    stopPropagation: 取消$emit触发的事件进一步的传播
    preventDefaul:  把defaultPreevented标志设置为true,告诉子作用域可以无需处理该事件。
    defaultPreevented:布尔值
    angular: 内置事件
    $includeContentLoaded($emit事件)
    ngInclude内容重新加载的时候,从ngInclude指令触发

    $includeContentRequested($emit事件)

    从调用ngInclude的作用域上发送,每次ngInclude的内容被请求的时候,都会发布该事件

    $viewContentLoaded($emit事件)

    当ngView内容被重新加载时,从ngView作用域上发布

    $locationChangeStart($broadcast事件)

    通过$location服务对浏览器的地址更新时会触发$locationChangeStart事件

    $locationChangeSuccess($broadcast事件)

    当浏览器的地址成功变更时触发

    $routeChangeStart($broadcast事件)

    在路由变更发生之前,该事件从$rootScope发布

转载于:https://www.cnblogs.com/leigood/p/5790573.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值