一.前言
1.$watch是scope内置的函数,它的作用是用来监听数据的变化。
2.$watch可监听哪些数据?
单个对象的属性
需要计算的结果(函数)
3. 语法: $scope.$watch(F,M,B);
二.对$watch参数的了解
F:要监听的数据(表达式或函数的字符串),主要是监听这些数据改变没有。它会返回被监听数据的当前值。
M:当监听的数据发生变化时,就会调用M(它是函数或表达式)。如果是函数形多,则会接收到F的新旧两个值和作用域对象,示例:
$scope.$watch("formData",function(newValue,oldValue, scope) { //这里是监听的数据发生变化后调用 //formData是$scope.formData={};里的 } }, true);
为true时:将会检查监听对象的每个属性是否发生变化。适用于监听数组或者监听的是一个对象上的所有属性。由于每次都要遍历监听对象的值是否发生变化,如果数组值过多,或对象属性多,那么一点点改变就会造成大量的遍历。
三.监听一个函数的写法
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>angularJS watch</title> </head> <body> <div ng-app="myApp" ng-controller="control"> <input type="text" set-Focus ng-blur="setBlur()"> <button ng-click="getFocus()">获取焦点</button> </div> </body> <script src="jquery-1.8.3.js"></script> <script src="angular1.2.9.js"></script> <script src="app.js"></script> </html>
app.js
//模型 var app = angular.module('myApp',[]); //控制器 app.controller("control",function($scope){ $scope.isFocus = false; //监听的函数,须返回当前值 $scope.method = function(){ return $scope.isFocus; } //点击获得焦点操作 $scope.getFocus = function(){ $scope.isFocus = true; //$scope.method(); }; //失去点后,赋值为false可再次点击获得焦点 $scope.setBlur = function(){ $scope.isFocus = false; } }); //自定义指令 app.directive('setFocus',[ function(){ return { link:function(scope, element){ //监听的数据是一个函数,该函数必须先在父作用域定义 scope.$watch(scope.method,function(newValue,oldValue, scope) { if(newValue&& !oldValue){ element[0].focus(); //获取焦点 } }, true);; } }; }]);
四.监听多个数据的写法
两种:
1.用+连接起来:$scope.$watch('obj.name+obj.age');
2.放进一个数组或对象中后,将第三个参数设为true,如:$scope.$watch('obj',function(){},true);
文章来源:http://blog.csdn.net/zcl_love_wx/article/details/51383548
相关推荐
本文深入探讨了AngularJS框架中的ng-checked指令,通过真实案例代码的形式展示了如何使用ng-checked实现复选框的状态记忆与回写。ng-checked指令在AngularJS中用于获取和设置复选框(checkbox)的选中状态。它依赖于...
在AngularJS中,$sce(Strict Contextual Escaping,严格上下文转义)是一个核心服务,用于确保在模板中动态插入的内容是安全的。它主要用于处理和展示可能包含恶意代码的数据,例如HTML、JavaScript、资源URL等。...
它允许我们监听并响应模型的变化。在上述指令中,我们没有直接使用`watch`,但在某些情况下,我们可能需要监视特定模型的改变来决定何时触发焦点获取,例如: ```javascript scope.$watch(attrs.focusIf, function...
指令的`link`函数中,我们使用`$watch`监听`isFocus`这个属性的变化。当`isFocus`变为`true`且`isCome`也为`true`时(意味着用户触发了获取焦点的业务逻辑),我们通过`element[0].focus();`赋予input元素焦点。同时...
AngularJS的UI-Router是AngularJS的一个强大路由插件,它提供了一种更灵活的方式来管理应用的导航和视图。本文将深入解析AngularJS之UI-Router,帮助开发者更好地理解和运用这一工具。 首先,要使用UI-Router,我们...
在AngularJS中,ng-drag和ng-drop是两个指令,用于实现拖放(drag-and-drop)功能。这两个指令是AngularJS社区开发的ngDraggable模块的一部分,它为AngularJS应用程序提供了方便的拖放操作支持。 1. **ng-drag**: ...
指向深度学习的高中化学事实性知识内涵深究及教学建议——以“钠及其化合物”为例.pdf
《电路中“地”的深究——克服电磁干扰》 接地,是电路设计中至关重要的一环,却也是最为复杂的部分。电路中的“地”,并非我们通常理解的地球表面,而是电路系统中的参考点,用于消除噪声、确保信号稳定的重要手段...
资源名称:Android 安全架构深究内容简介:《Android 安全架构深究》自底向上描述了Android 的安全架构,深入探究与安全相关的Android 子系统、设备和数据组件的内部实现。其中包括包和用户管理,权限和设备策略,...
本文档“***-东吴证券-商业贸易行业中国品牌化崛起系列深度(一):深究‘品牌溢价’的来源,万元奢侈品包成本是多少?”深入探讨了品牌溢价的来源和奢侈品包的实际成本,阐述了中国品牌在国际市场上崛起的潜力和...
研究基于GPS观测数据,通过分析断裂两侧的地壳差异运动、最大剪切应变率及断裂位错模型的反演,揭示了该断裂的活动强度处于中等偏弱水平,并存在明显的分段活动特征。西北段、中段和东南段的右旋走滑速率分别为(2.1...
ANDROID安全架构深究.pdf ANDROID安全架构深究.pdf ANDROID安全架构深究.pdf
深究动画精神家园.doc
1. **安全模型**:书中首先介绍了Android安全的基本模型,包括用户认证、权限管理、应用程序隔离等核心概念。 2. **权限系统**:详细解析了Android权限系统的工作原理,包括如何请求权限、如何实现细粒度控制等。 3....