不确定是否所有内容都正确连接在这里。目标是调用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'
};
}]);
答案 0 :(得分:2)
不,$timeout
是封闭函数的参数,而不是this
的成员。正确的代码是:
app.directive('slideShow',['$timeout', function($timeout) {
...
$timeout(function() {
...
另外要特别注意:因为它不是setCurrent()
是this
的成员,即控制器对象。它可能也需要纠正。