虽然angularJS可以实现双向数据绑定,但有时,数据发生改变的时候前端页面展示的信息并不会更新,这时就可以借助$scope.$apply() 强制重新渲染。
见小案例:
<!DOCTYPE HTML>
<html ng-app>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>$scope.$apply()</title>
<script src="../js/angular.min.js"></script>
<script>
function Aaa($scope){
$scope.name = 'hello';
setTimeout(function(){
$scope.$apply(function(){
$scope.name = 'hi';
});
},2000);
}
</script>
</head>
<body>
<div ng-controller="Aaa" >
<p>{{name}}</p>
</div>
</body>
</html>
本例的其他实现方式有,通过$timeout 实现 2s 后 "hello"刷新为“hi”.
<!DOCTYPE HTML>
<html ng-app>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>$scope.$apply()</title>
<script src="../js/angular.min.js"></script>
<script>
function Aaa($scope,$timeout){
$scope.name = 'hello';
$timeout(function(){
$scope.name = 'hi';
},2000);
}
</script>
</head>
<body>
<div ng-controller="Aaa" >
<p>{{name}}</p>
</div>
</body>
</html>
通过触发时间实现 "hello"刷新为“hi”.
<!DOCTYPE HTML>
<html ng-app>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>$scope.$apply()</title>
<script src="../js/angular.min.js"></script>
<script>
function Aaa($scope,$timeout){
$scope.name = 'hello';
$scope.show = function(){
$scope.name = 'hi';
};
}
</script>
</head>
<body>
<div ng-controller="Aaa" ng-click="show()">
<p>{{name}}</p>
</div>
</body>
</html>