0

不确定这里的一切是否正确连接。目标是调用 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

4

1 回答 1

2

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

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

还要特别注意:就目前而言,它们都不setCurrent()是 的成员this,即控制器对象。它可能也需要纠正。

于 2014-09-01T18:57:01.660 回答