获取 ng-init 和 ng-repeat 中的元素

Getting an element inside ng-init and ng-repeat

本文关键字:元素 ng-repeat ng-init 获取      更新时间:2023-09-26

我正在尝试使用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);
}