首先,我已经阅读了数百万条帖子,说你不应该从Angular中的Controller更新DOM元素。我知道。
尝试使用angular-timer指令(倒计时)时。我遇到了一些问题,所以最后,通过插件开发人员的帮助,我们做了这个plunker,它正在工作并满足我的要求。
http://plnkr.co/edit/CWXnKMbygVDMc8xzshZa?p=preview
然而,当将此代码移动到我的应用程序时,我将$元素添加到控制器时出现了下一个错误:
`Error: Unknown provider: $elementProvider <- $element`
我阅读了很多帖子,我知道它可以注入,但我不知道为什么它在我的应用程序中无效。
另一方面,我喜欢做正确的事情,所以我不喜欢实施一些不好的做法。所以,如果你有更好的方法,请告诉我。
答案 0 :(得分:1)
看起来很难用jQuery解析DOM,我不明白你为什么不在ng-repeat
中使用timer指令。
这是一种方法,只需添加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 强>
注意......这会将新属性elapsed
添加到预订对象。如果这是一个问题,可以创建解决方法