2016-02-26 2 views
1

Мне нужно использовать угловой $ timeout для отображения элемента в течение 2 секунд. он работает с $ scope, но теперь я не понимаю, как использовать его с ключевым словом this this "controller as ...".

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 шаблон декларируя контроллер над HTML, как ng-controller="testCtrl as vm". Так что vm будет иметь псевдоним контроллера в основном, который будет отвечать object сделать значения this контекст над HTML для привязки.

Markup

<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 local ang global scope? – OleGunarSolskier

+0

@OleGunarSolskier да..подготовьтесь к справочному ответу, который я там добавил .. THBN ..) –

 Смежные вопросы

  • Нет связанных вопросов^_^