angular $observe() 和$watch的区别

1、$observe()是属性attributes的方法,只能在DOM属性的值发生变化时用,并且只用于directive内。

当需要监听一个包含变量的属性值时attr1="Name:{{name}}",使用attrs.$observe('attr1', function(){...})

2、$watch可以监听expression表达式(函数function或者string字符串),如果是string字符的话会自动解析成函数function。

$watch是scope上的方法,可以在任何存在scope的地方使用:

controller--通过ng-view、ng-contrller、directive controller创建的任何controller

directive--link function

例如:attr1="myModel.some_prop",

在controller中$scope.$watch("myModel.some_prop", function(){...})

在directive中scope.$watch(attrs.attr1, function(){...})或者scope.$watch(attrs['attr1'], function(){...})

如果使用attrs.$observe('attr1'),则只会获取到字符串myModel.some_prop

posted @ 2016-03-29 16:35  echo2016  阅读(587)  评论(0编辑  收藏  举报