搜索

首页  >  问答  >  正文

angular.js - 请教一个关于angularjs的小问题

我是angularjs的一个新手,今天在项目中遇到这样的一个问题
我想在1S种以后给p隐藏掉,但是一直没效果,
求解,为什么一直没反应

<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)
}
天蓬老师天蓬老师2865 天前538

全部回复(5)我来回复

  • 世界只因有你

    世界只因有你2017-05-15 17:11:02

    <!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>

    在回调函数里需要手动调用$scope.$apply();

    或者使用$timeout
    http://www.cnblogs.com/ys-ys/...

    望采纳,谢谢

    回复
    0
  • 某草草

    某草草2017-05-15 17:11:02

    用$timeout:

    app.controller('myinfoCtrl', ['$scope','$timeout'],function($scope,$timeout) {
        $scope.on=true;
        $timeout(function(){
            $scope.on=false;
        },1000)
    }
    

    直接在setTimeout中改变$scope中绑定的变量不会触发变量的脏数据检查,变量变化不会被同步到界面,因此界面也不会做出更改。

    回复
    0
  • PHPz

    PHPz2017-05-15 17:11:02

    我没用过setTimeout, 不过把setTimeout换成$timeout 可以实现你说的效果

    回复
    0
  • PHP中文网

    PHP中文网2017-05-15 17:11:02

    <p ng-show="on">111</p>

    app.controller('myinfoCtrl', ['$scope'],function($scope) {

    $scope.on=true;
    setTimeout(function(){
        $scope.$apply(function(){
            $scope.on=false;
        });
    },1000)

    }
    用setTimeout不会触发$digest循环,建议用angular封装好的$timeout吧

    回复
    0
  • 世界只因有你

    世界只因有你2017-05-15 17:11:02


    @流星留步 为什么会报错?

    回复
    0
  • 取消回复