angular如何监听?

在angularjs中有时候路由跳转比值的传递或者赋值快一些,导致页面已经跳转了,而值还没有过来,进而会导致一些报错,所以就需要去监听某些关键的参数。

angular监听的方法:

第一种方法:angularjs的$watch

<div ng-controller="myCtrl">
  <input type="text" ng-model="inputTxt"/>
  <p>{{inputTxt}}</p>
</div>
<script>
  var app = angular.module('myCtrl', ['ng']);
  app.controller('myCtrl', function ($scope) {
    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作用域上,或者在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);

以上就是angular如何监听?的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Angular.js 答疑