我需要使用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);
}
});
答案 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);
}
});
此外,我还建议您将this
上下文置于某个变量中,这样您就不会遇到与此相关的问题。有关详细信息,请参阅this answer