发表于: 2019-12-20 21:15:55
1 1073
今天完成的事:
完完整整的做完视频部,文学部,我的收藏,学生证
明天的计划:
后台的登录和路由守卫。
遇到的困难:
暂无。
今天的收获:
如同浏览器响应浏览器层的事件,比如鼠标点击、页面滚动那样, Angular应用也可以响应
Angular事件。这使我们可以在应用中嵌套的各组件之间进行通信,即使这些组件在创建时并未
考虑到其他组件。
<span 因为作用域是有层次的,所以我们可以在作用域链上传递事件。
通常来说,选择要使用的事件传递方式,一个好的经验法则是:查看将要触发事件的作用域。
如果要通知整个事件系统(允许任意作用域处理这个事件),就要往下广播。
<span
<span <="" span="" style="word-break: break-all;">
在一个$emit()事件函数的调用中,事件从子作用域冒泡到父作用域。在产生事件的作用域
之上的所有作用域都会收到这个事件的通知。
当想要跟应用的其他部分交流状态的变更时,我们使用$emit()。如果想要跟$rootScope通
信,需要$emit()这个事件。
$emit()方法带有两个参数。
1. name(字符串)
要发出的事件名称。
2. args(集合)
一个参数的集合,作为对象传递到事件监听器中。
$emit()方法返回了一个事件对象
从监听器中发出的一切异常都会传递到$exceptionHandler服务中
<span
要监听一个事件,我们可以使用$on()方法。这个方法为具有某个特定名称的事件注册了一
个监听器。事件名称就是在Angular中触发的事件类型。
例如,我们可以在路由变更过程被触发时,监听事件:
scope.$on('$routeChangeStart',
function(evt, next, current) {
// 一个新的路由被触发了
});
不管什么时候事件$routeChangeStart(路由将要变更的时候,会广播这个事件)被触发,
监听器(这个函数)都会被调用。
Angular把evt对象作为第一个参数传给正在监听的一切事件,不管它是我们自定义的事件还
是内置的Angular服务
事件对象有以下属性。
1. targetScope(作用域对象)
这个属性是发送或者广播事件的作用域。
2. currentScope(作用域对象)
这个对象包含了当前处理事件的作用域。
3. name(字符串)
这个字符串是触发之后,我们正在处理的事件名称。
4. stopPropagation(函数)
stopPropagation()函数取消通过$emit触发的事件的进一步传播。
5. preventDefault(函数)
preventDefault把defaultPrevented标志设置为true。尽管不能停止事件的传播,我们可
以告诉子作用域无需处理这个事件(也就是说,可以安全地忽略它们)。
mousedown:鼠标按钮被按下(左键或者右键)时触发。不能通过键盘触发。
mouseup:鼠标按钮被释放弹起时触发。不能通过键盘触发。
click:单击鼠标左键或者按下回车键时触发。这点对确保易访问性很重要,意味着onclick事件处理程序既可以通过键盘也可以通过鼠标执行。
dblclick:双击鼠标左键时触发。
mouseover:鼠标移入目标元素上方。鼠标移到其后代元素上时会触发。
mouseout:鼠标移出目标元素上方。
mouseenter:鼠标移入元素范围内触发,该事件不冒泡,即鼠标移到其后代元素上时不会触发。
mouseleave:鼠标移出元素范围时触发,该事件不冒泡,即鼠标移到其后代元素时不会触发。
mousemove:鼠标在元素内部移到时不断触发。不能通过键盘触发。
评论