2013-11-28 113 views
0

我想在html表上做一個動畫。如何使用angularjs承諾?

我使用$interval來逐一顯示每一行。

var loadList = function() { 
    Obj.query(function(obj){ 
     $scope.objs = []; 
     $interval(function() {$scope.objs.push(obj.shift())}, 200, obj.length); 
    }); 
} 

然後有一個功能一個接一個, 刪除每一行最後它的循環和重新載入表:

var cleanList = function() { 
    var delay = 200; 
    var n = $scope.objs.length; 

     if (n!==0) { 
      $interval(function() {$scope.objs.shift()}, delay, n); 
     } 
     $interval(function() { loadList() }, delay*n, 1); 
    } 

loadList(); 
$interval(cleanList, 7000); 

的代碼在這裏工作(這裏是the plunker),但我想有一種方法可以在cleanList函數完成時觸發一種「回調」或「承諾」來觸發更好的事情嗎?

我該怎麼做?

回答

0

$ interval返回一個承諾,以便您可以簡單地調用then()就可以了。

例如:

$interval(function() {$scope.objs.push(obj.shift())}, 200, obj.length).then(cleanList); 

這裏的工作plunkr例如:

http://plnkr.co/edit/rYzXjM?p=preview