我正在尝试使用ng-init在特定元素加载时进行一些初始化。在我的模板中,我正在这样做:
<div id="timer-0" ng-init="initTimer('timer-0', timerOne);"></div>
timerOne 是在控制器的作用域中声明的一个对象,如下所示:
$scope.timerOne = {...};
$scope.initTimer = function(id, timer)
{
var element = angular.element("#"+id);
// a bunch of other stuff with the timer and element interacting with each other
}
当我的HTML像这样硬编码时,一切正常,但是当我开始尝试在ng-repeat中调用initTimer时,angular.element什么也没返回。
我的 ng 重复看起来像这样:
<div ng-repeat="timer in timers">
<h1>{{timer.label}}</h1>
<div id="timer-{{$index}}" ng-init="initTimer('timer-'+$index, timer);"></div>
</div>
我猜这些元素是在调用 ng-init 后插入到 DOM 中的。一旦我确定这些元素存在,有没有办法调用我的 init 函数?
只需在 init 函数中将索引作为参数传递即可。
<div ng-repeat="timer in timers">
<h1>{{timer.label}}</h1>
<div id="{{'timer-'+$index}}" ng-init="initTimer($index, timer);"></div>
</div>
在控制器中尝试像这样访问元素:
$scope.initTimer = function(id, timer)
{
var element = angular.element('timer-' + id);
}