2016-02-26 63 views
1

我需要使用角度$超時顯示元素2秒。它適用於$範圍,但我現在不用如何將「this」關鍵字用作「控制器...」語法。

https://plnkr.co/edit/GPWRg4acYVrP1Ry00D7z?p=preview

angular.module("test", []) 
.controller("testCtrl", function($scope, $timeout){ 

    $scope.boo = false; 

    $scope.disappear = function(){ 
    $scope.boo = true; 
    $timeout(function() { 
    $scope.boo = false; 
    }, 2000); 
    } 
}); 

回答

2

不要使用controllerAs模式,而像ng-controller="testCtrl as vm"聲明控制器通過HTML。因此,vm將基本上具有控制器的別名,其將負責object使得通過HTML進行this上下文的值的綁定。

標記

<body ng-controller="testCtrl as vm"> 
    <div> 
    <button ng-click="vm.disappear()">button</button> 
    <h1 ng-show="vm.boo">Hello Plunker!</h1> 
    </div> 
</body> 

代碼

angular.module("test", []) 
    .controller("testCtrl", function($timeout) { 
    var vm = this; 
    vm.boo = false; 

    vm.disappear = function() { 
     vm.boo = true; 
     $timeout(function() { 
     vm.boo = false; 
     }, 2000); 
    } 
    }); 

Demo Plunkr

此外,我也建議你把this方面的一些變量中,這樣你就不會得到問題與此相關`。請參閱this answer以獲得更多信息

+0

非常感謝!你是對的。我已經嘗試過,但沒有分配這個變量,它沒有奏效。這與JavaScript本地和全球範圍有關嗎? – OleGunarSolskier

+0

@OleGunarSolskier yes..read閱讀我在那裏添加的參考答案..謝謝你.. :) –