Javascript 将angularjs$timeout与“一起使用”;这";代替$scope

Javascript 将angularjs$timeout与“一起使用”;这";代替$scope,javascript,angularjs,timeout,this,Javascript,Angularjs,Timeout,This,我需要使用angular$timeout来显示元素2秒钟。它与$scope一起工作,但我现在不知道如何将它与“this”关键字和“controller as…”语法一起使用 在html上声明控制器时,一定要使用controllerAs模式,比如ng controller=“testCtrl as vm”。因此,vm将具有控制器的别名,该别名将负责对象在HTML上生成此上下文的值以进行绑定 标记 <body ng-controller="testCtrl as vm"> <

我需要使用angular$timeout来显示元素2秒钟。它与$scope一起工作,但我现在不知道如何将它与“this”关键字和“controller as…”语法一起使用


在html上声明控制器时,一定要使用
controllerAs
模式,比如
ng controller=“testCtrl as vm”
。因此,
vm
将具有控制器的别名,该别名将负责
对象
在HTML上生成
上下文的值以进行绑定

标记

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


此外,我还建议您将
这个
上下文放在某个变量中,这样您就不会遇到与此相关的问题。有关更多信息,请参阅

非常感谢!你是对的。我已经试过了,但是没有把它分配给变量,所以它不起作用。这与javascript本地和全局作用域有关吗?@OleGunarSolskier是的..请阅读我添加的参考答案。。谢谢……)
<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);
    }
  });