发表于: 2017-06-22 23:45:02

1 822


今天完成的事情:改好了编辑公司页面的公司行业。想尝试用$watch监听公司行业length的值,触发ng-disable ,但是没效果。

如果用requied的话,进入编辑页面,必须再选择一次公司行业,才能触发ng-disable,所以我想用watch监控数组的length以判断公司行业是否有值,如果有,则ng-disable =fasle。


明天计划的事情:继续把李婷留下的坑改好。 
遇到的问题:遇到的问题就是今天这个
收获:

$scope.$watch(watchObj,watchCallback,ifDeep)

watchObj:

需要被检测的对象,可以是以下任意一种:

1. 某个数据,监测这个数据的值是否发生变化

2. 一条angular表达式,监测表达式的结果是否发生变化

3. 函数(),监测函数的返回值是否发生变化

注意,以上三种,无论是哪种,都应该是字符串格式,并且都是在$scope作用域下执行的.

4.函数,非字符串格式,而是直接传入一个函数,可以直接写一个匿名函数,也可以传入一个函数,注意,它不是在$scope作用域下的,所以,如果传入的是当前作用域下的函数,还是需要写:$scope.fun

watchCallback :

接受一个函数或者表达式,当watchObj发生变化是会被调用或执行.

如果是函数形式,它会收到三个参数:

watchCallback (newValue,oldValue,scope)

newValue: watchObj的新的值 

oldValue: watchObj的旧的值

scope: 就是当前控制器的$scope

注意:函数或者表达式不是在$scope作用域下执行的,所以,如果是需要调用当前作用域下的某个函数,应该$scope.watchCallback

ifDeep: 

一个布尔值

如果 watchObj 的类型是对象或者数组的时候, ifDeep值设置为true, 那么angular会检测被监控对象的每个属性是否发生了变化,而不只是检测一个简单的值.

 

最后,$(watch)会返回一个函数,这个函数可以用来销毁该控制器,只需要被调用一次即可:

var destroy = $scope.$watch(...);

destroy()



返回列表 返回列表
评论

    分享到