我正在尝试使用 ng-init 在加载特定元素时进行一些初始化。在我的模板中,我这样做:
<div id="timer-0" ng-init="initTimer('timer-0', timerOne);"></div>
timerOne 是在 Controller 范围内声明的对象,如下所示:
$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-repeat 看起来像这样:
<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>
并在 Controller 中尝试像这样访问元素:
$scope.initTimer = function(id, timer)
{
var element = angular.element('timer-' + id);
}
关于javascript - 在 ng-init 和 ng-repeat 中获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28080352/