搜尋

首頁  >  問答  >  主體

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)
}
天蓬老师天蓬老师2866 天前542

全部回覆(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

    111

    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
  • 取消回覆