javascript - 在 ng-init 和 ng-repeat 中获取元素

标签 javascript angularjs angularjs-ng-repeat

我正在尝试使用 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/

相关文章:

javascript - 如何让输入类型文件在打开文件选择器之前等待http请求的响应

javascript - Javascript 中的 Lang.Class

angularjs - 使用 htaccess 定向到父目录

javascript - 在 AngularJS 中,为什么终端自定义指令的行为会随着内置指令而改变?

javascript - 嵌套在 ng-repeat 中的 ng-show 不会更新

javascript - DropDownList Change() 似乎没有触发

javascript - 如何在动态内容上使用 jquery.confirm 插件

javascript - 使用 Angularjs 的嵌套选项卡

css - 在 css 中悬停后图标消失

angularjs - 在 tr 中嵌套 ng-repeat