一尘不染

ng-repeat完成事件

angularjs

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

当我打电话时

$(document).ready()

我没有结果。

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

没有帮助。

ng重复填充完成后,有什么方法可以执行功能?我已经阅读了有关使用custom的建议directive,但是我不知道如何在ng-
repeat和div中使用它。


阅读 229

收藏
2020-07-04

共1个答案

一尘不染

确实,您应该使用指令,并且ng-
Repeat循环的末尾没有事件关联(因为每个元素都是单独构造的,并且具有自己的事件)。但是a)您可能只需要使用指令,b)您可以使用一些特定于ng-
Repeat的属性来创建“ on ngRepeat完成”事件。

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

然后,还有$index$first$middle$last属性,你可以用它来触发事件。因此,对于此HTML:

<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中查看它的实际操作。希望能帮助到你!

2020-07-04