2014-07-22 70 views
0

a beautiful typewriter directive already written,但我正在尋找更簡單的東西,只是在間隔後添加每個字母。我無法得到這個工作。它一次顯示文本。 $超時有問題。有沒有人有什麼建議?角度 - 簡單的打字機效果?

var time = 1000; 
var addLetter = function(i) { 
    $scope.string2 = $scope.string.substr(0, i); 
}; 
for (var i = 0, len = $scope.string.length; i < len; i++) { 
    (function(time) { 
     $timeout(function() { 
      addLetter(i); 
     }, (time + 300)); 
    })(i); 
} 

回答

3

這是另一種方法。

var content = "contentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontent"; 

$scope.type = ""; 
var i=0; 

var timer = $interval(function(){ 
    if(i<content.length) 
     $scope.type += content[i]; 
     else 
     $interval.cancel(timer); 

    i++; 
    $scope.$apply(); 
}, 100); 

信用:https://gist.github.com/frozonfreak/8018689

演示:http://plnkr.co/edit/BILaWVuNpao2zcIInXLl?p=preview

+1

我更新了答案。 – lucuma

+0

讓我現在試試你的,看起來好多了。 – ac360

+1

我更新它以使用角度$間隔並在完成時取消它。 – lucuma

0

更新 - 這是爲我工作,不知道是否可以更有效......

var time = 0; 
var addLetter = function(i) { 
    $scope.string2 = $scope.string.substr(0, i); 
}; 
for (var i = 0, len = $scope.string.length; i < len + 1; i++) { 
    time = time + 50; 
    (function(time, i) { 
     $timeout(function() { 
      addLetter(i); 
     }, (time)); 
    })(time, i); 
}