AngularJS $watch vs $on

阅读时长 3 分钟读完

在AngularJS中,$watch和$on都是用于监视数据变化的方法。它们的主要区别在于它们的用途和实现方式。

$watch

$watch是最常用的监视数据变化的方法之一。它可以监视表达式或者函数的返回值,并在监听到变化时执行相应的回调函数。

用法

深度监听

默认情况下,$watch只会比较被监视的对象的引用,如果是同一个对象,即使它的属性值发生了变化也不会触发回调函数。如果要进行深度监听,需要将第三个参数设置为true。

性能注意事项

由于$watch会在每次$digest循环中都被调用一次,因此在作用域中定义过多的$watch会导致性能问题。为了避免这种情况,可以使用$watchCollection来代替$watch。$watchCollection只会比较集合的长度和每个元素的值是否相等,而不会比较每个元素的引用。

$on

$on是用于处理事件的方法。它可以监听一个事件并在事件触发时执行相应的回调函数。

用法

触发事件

要触发事件,可以使用$emit或者$broadcast方法。$emit会向上级作用域广播事件,而$broadcast会向下级作用域广播事件。

取消事件监听

如果要取消事件监听,可以使用$off方法。

总结

$watch和$on都是AngularJS中非常重要的方法。$watch主要用于监视数据变化,而$on则用于处理事件。在实际开发中,根据具体需求选择合适的方法可以有效地提高应用程序的性能。

示例代码:https://codepen.io/anon/pen/qwWJqE

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/28731

纠错
反馈

纠错反馈