AngularJS:指令控制器中的$ timeout使用"这个"

时间:2014-09-01 18:53:01

标签: angularjs angularjs-directive angularjs-scope angularjs-service angularjs-timeout

不确定是否所有内容都正确连接在这里。目标是调用nextSlide函数,让它更改类,等待一秒,然后将当前图片填入1,然后再更改类。我认为问题是范围,但我不在代码中的任何地方使用$ scope,所有这些例子都使用它。超时在运行时完全跳过。

如何执行$ timeout?

var app = angular.module('cole', []);
app.directive('slideShow',['$timeout', function() {
    return{
        restrict: 'E',
        templateUrl: 'slide-show.html',
        controller: function(){


this.nextSlide = function() {

                document.getElementById("frontPic").className = "fadeOut";

                    this.$timeout(function() {

                    this.setCurrent(this.current + 1);

                    document.getElementById("frontPic").className = "picFront";

                }, 1000);
            };

      },
        controllerAs: 'pics'
    };
}]);

完整代码在https://github.com/Cameron64/Angular

1 个答案:

答案 0 :(得分:2)

不,$timeout是封闭函数的参数,而不是this的成员。正确的代码是:

app.directive('slideShow',['$timeout', function($timeout) {
    ...
    $timeout(function() {
        ...

另外要特别注意:因为它不是setCurrent()this的成员,即控制器对象。它可能也需要纠正。