使用angularjs $ timeout和#34;这个"投入范围

时间:2016-02-26 21:10:34

标签: javascript angularjs timeout this

我需要使用angular $ timeout来显示元素2秒。它适用于范围,但我现在不知道如何使用"这个"关键字a"控制器为..."语法。

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);
  }
});

1 个答案:

答案 0 :(得分:2)

在将控制器声明为controllerAs之类的html时,请使用ng-controller="testCtrl as vm"模式。因此vm将具有控制器的别名,基本上负责object使用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