Je suis un débutant dans Angularjs. J'ai rencontré un tel problème dans le projet aujourd'hui
Je veux masquer p après 1S, mais cela n'a aucun effet
S'il vous pla?t, dites-moi pourquoi il n'y a pas de réponse
<p ng-show="on">111</p>
app.controller('myinfoCtrl', ['$scope'],function($scope) {
$scope.on=true;
setTimeout(function(){
console.log($scope.on)
$scope.on=false;
console.log($scope.on)
},1000)
}
歡迎選擇我的課程,讓我們一起見(jiàn)證您的進(jìn)步~~
<!DOCTYPE html>
<html ng-app="app">
<head>
<title></title>
<script type="text/javascript" src="angular.min.js"></script>
</head>
<body ng-controller="myinfoCtrl">
<p ng-show="on">111</p>
<script type="text/javascript">
var app = angular.module('app', []);
app.controller('myinfoCtrl', ['$scope',function($scope) {
$scope.on=true;
setTimeout(function(){
console.log($scope.on)
$scope.on=false;
$scope.$apply();
console.log($scope.on)
},1000)
}]);
</script>
</body>
</html>
Vous devez appeler manuellement $scope.$apply();
dans la fonction de rappelOu utilisez $timeout
http://www.cnblogs.com/ys-ys/...
J'espère l'adopter, merci
Utilisez $timeout?:
app.controller('myinfoCtrl', ['$scope','$timeout'],function($scope,$timeout) {
$scope.on=true;
$timeout(function(){
$scope.on=false;
},1000)
}
La modification des variables liées dans $scope directement dans setTimeout ne déclenchera pas la vérification des données sales des variables. Les modifications des variables ne seront pas synchronisées avec l'interface, donc l'interface n'effectuera pas de modifications.
Je n'ai jamais utilisé setTimeout, mais changer setTimeout en $timeout peut obtenir l'effet que vous avez mentionné
<p ng-show="on">111</p>
app.controller('myinfoCtrl', ['$scope'],function($scope) {
$scope.on=true;
setTimeout(function(){
$scope.$apply(function(){
$scope.on=false;
});
},1000)
}
L'utilisation de setTimeout ne déclenchera pas la boucle $digest. Il est recommandé d'utiliser le $timeout fourni dans angulaire