angular和angularjsangularjs数据监听的两种⽅法
在angularjs中有时候路由跳转⽐值的传递或者赋值快⼀些,导致页⾯已经跳转了,⽽值还没有过来,进⽽会导致⼀些报错,所以就需要去监听某些关键的参数。
第⼀种⽅法:angularjs的$watch
<div ng-controller="myCtrl">
<input type="text" ng-model="inputTxt"/>
<p>{{inputTxt}}</p>
</div>
<script>
var app = dule('myCtrl', ['ng']);
console.log($scope.inputTxt);
//监听模型数据的值的变化
$scope.$watch('inputTxt',function(nv,ov){//nv代表新的值,ov代表旧的值
if(nv){
console.log($scope.inputTxt)
}
})
})
</script>
使⽤angularjs内置的watch⽅法监听作⽤域$scope上的值 ,如果值发⽣变化就会监听到有新的值(也就是nv)
第⼆种⽅法:使⽤定时器$interval循环查
scope作⽤域上,或者在
这种⽅法适⽤于变量没有在scope上但是会出现“赋值延迟”的时候也可以使⽤。
⽐如:
//你将 sessionStorag[‘name’]赋值给$scope.input的时候
$scope.input = sessionStorag['name'];
当sessionStorag['name']从浏览器读取值⽐较慢的时候就会出现问题,
当sessionStorag['name']的值没有取到,它会把undefined赋值给$scope.input,
这个时候⽤$watch去监听,虽然有值,但是是undefined,没有什么意义,也影响下⼀步的操作。
如果⽤$interval去监听就可以完美解决这个问题,注意:监听完之后清理定时器,避免出现内存泄露或者溢出问题
var timer = $scope.$interval(function(){
if(sessionStorag['name']){
$scope.input = sessionStorag['name'];
console.log($scope.input);
$interval.cancel(timer);
}
},500);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。