小编典典

ng-repeat 完成事件

all

我想用表调用一些针对 div 的 jQuery 函数。该表填充有ng-repeat.

当我调用它时

$(document).ready()

我没有结果。

$scope.$on('$viewContentLoaded', myFunc);

没有帮助。

在 ng-repeat 填充完成后,有什么方法可以立即执行功能?我已经阅读了有关使用 custom 的建议directive,但我不知道如何将它与
ng-repeat 和我的 div 一起使用…


阅读 102

收藏
2022-06-24

共1个答案

小编典典

实际上,您应该使用指令,并且没有与 ng-Repeat 循环结束相关的事件(因为每个元素都是单独构建的,并且有自己的事件)。但是 a)
使用指令可能是您所需要的,并且 b) 您可以使用一些 ng-Repeat 特定属性来制作“on ngRepeat finished”事件。

具体来说,如果您只想为整个表设置样式/添加事件,则可以在包含所有 ngRepeat 元素的指令中使用。另一方面,如果您想专门处理每个元素,您可以在
ngRepeat 中使用指令,它会在创建后对每个元素起作用。

然后,您可以使用 、 和 属性来触发$index事件。所以对于这个 HTML:$first``$middle``$last

<div ng-controller="Ctrl" my-main-directive>
  <div ng-repeat="thing in things" my-repeat-directive>
    thing {{thing}}
  </div>
</div>

您可以使用如下指令:

angular.module('myApp', [])
.directive('myRepeatDirective', function() {
  return function(scope, element, attrs) {
    angular.element(element).css('color','blue');
    if (scope.$last){
      window.alert("im the last!");
    }
  };
})
.directive('myMainDirective', function() {
  return function(scope, element, attrs) {
    angular.element(element).css('border','5px solid red');
  };
});

在这个Plunker中查看它的实际效果。希望能帮助到你!

2022-06-24