$watch
监听
$scope.$watch('watchobj',function(newval, oldval, scope){
// code code code
}, boolean)
参数解析
- watchobj 是
$scope
或$rootscope
作用域上的变量 scope
参数,可省略,返回变量的作用域范围- 参数三
boolean
:是否为比较实体对象(不是比较引用)
1. 监听user.username,如果user里字段发生变化,则不被监听
只是地址的引用 传递:比如:user.name改变则不触发对象变化
2. 监听user,如果user本身发生变化,则被监听 比如:user={}
3. 当第三个参数true,则改变对象下的单个字段时(username)也会被监听到
4. 当watchobj为字符串,任何变化都会被监听
5.
$interval $timeout
功能等同于setInterval
清除方法:$interval.cancel(name);
$apply
当进行非angular提供的异步操作时候,如果数据不同步,可以使用。
在需要应用的数据后执行$scope.$apply()
// code
// ...
// code
// 将数据应用起来
$scope.$apply();
$scope $rootScope
子父级之间继承
兄弟间不可访问
根作用域$rootScope 全局可用
控制器事件传播
先在页面中进行 控制器嵌套
函数,对象,字符串
$broadcast
外层控制器(父)向 内层控制器(子) 传播数据,通知所有子级
$scope.causeFun= function () {
$scope.$broadcast('fatherBc',{username:'Jerry'});
};
$emit
内层控制器(子) 向 外层控制器(父) 传播数据,通知所有父级
$scope.causeFun= function () {
$scope.$emit('sonBc',{msg:'收到数据'});
}
$on
监听(其他控制器)传播过来的数据
$scope.$on('sonBc', function (event,data) {
console.log(event);
console.log(data);
});