2013-12-20 69 views
1

首先,我已經閱讀了數以百萬計的帖子,說你不應該更新Angular中Controller的DOM元素。我知道。

當試圖使用角計時器指令(倒計時)。我遇到了一些問題,所以最後,在插件開發人員的幫助下,我們做了這個正在工作並符合我的要求的運動員。

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

然而,這種代碼移動到我的應用程序的時候,我得到了一個錯誤,當我在$元素添加到我的控制器:

`Error: Unknown provider: $elementProvider <- $element` 

我已經看了很多帖子,我知道它可以被注入,但我不知道爲什麼它不適用於我的應用程序。

在另一方面,我喜歡把事情做對,所以我不喜歡的東西執行是一種不好的做法。所以,如果你有更好的方法可行,請告訴我。

+0

您是否記得在您的應用程序中註冊計時器模塊? ('var app = angular.module('lazy-timer',['timer'])。'並將'angular-timer.min.js'添加到您的index.html?'$ element'中時刻。 –

回答

1

長相醜陋解析DOM使用jQuery,我不明白爲什麼你不將ng-repeat內使用定時器指令。

這裏的,只是增加了一個途徑和額外的陣列範圍爲eleapsedTimers然後將其用ng-repeat

$scope.elapsedTimers=[]; 

$scope.$on('timer-stopped', function (data) { 
    /* loop through bookings to find one that just stopped*/ 
    var now = new Date(); 
    angular.forEach($scope.bookingsList, function (item) { 
     if (!item.elapsed) { 
      if (item.booking_date <= now) {     
       item.elapsed = true; 
       $scope.$apply(function() { 
        $scope.elapsedTimers.push(item) 
       }); 
      } 
     } 
    }); 
}); 

HTML

<div id="result"> 
    <div ng-repeat="item in elapsedTimers">ID {{item.id}} elapsed</div> 
</div> 

DEMO

注顯示..這將是l將新屬性elapsed添加到預訂對象。如果這是一個問題,可以創建解決方法