猿问

吴-重复完成活动

吴-重复完成活动

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

当我召唤它的时候

$(document).ready()

我没有结果。

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

帮不上忙。

有什么方法可以在ng重复填充完成后立即执行函数吗?我读过关于使用自定义的建议directive但我不知道怎么用它和我的dv.


德玛西亚99
浏览 633回答 3
3回答

肥皂起泡泡

实际上,您应该使用指令,并且不存在与ng-重复循环结束相关联的事件(因为每个元素都是单独构造的,并且具有自己的事件)。但是,使用指令可能是您所需要的全部;(B)您可以使用一些ng-重复特定属性来使您的“onngRepeat Finish”事件。具体来说,如果您只想将事件样式/添加事件添加到整个表中,那么可以在包含所有ngRepeat元素的指令中这样做。另一方面,如果要具体处理每个元素,可以在ngRepeat中使用一个指令,在创建每个元素之后,它将对每个元素起作用。然后,有$index,&nbsp;$first,&nbsp;$middle和$last属性可用于触发事件。所以对于这个HTML:<div&nbsp;ng-controller="Ctrl"&nbsp;my-main-directive> &nbsp;&nbsp;<div&nbsp;ng-repeat="thing&nbsp;in&nbsp;things"&nbsp;my-repeat-directive> &nbsp;&nbsp;&nbsp;&nbsp;thing&nbsp;{{thing}}&nbsp;&nbsp;</div></div>您可以使用如下指令:angular.module('myApp',&nbsp;[]).directive('myRepeatDirective',&nbsp;function()&nbsp;{ &nbsp;&nbsp;return&nbsp;function(scope,&nbsp;element,&nbsp;attrs)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;angular.element(element).css('color','blue'); &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(scope.$last){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.alert("im&nbsp;the&nbsp;last!"); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;};}).directive('myMainDirective',&nbsp;function()&nbsp;{ &nbsp;&nbsp;return&nbsp;function(scope,&nbsp;element,&nbsp;attrs)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;angular.element(element).css('border','5px&nbsp;solid&nbsp;red'); &nbsp;&nbsp;};});在这里看到它的作用柱塞..希望能帮上忙!

拉丁的传说

如果您只是想在循环结束时执行一些代码,那么这里有一个稍微简单一些的变体,它不需要额外的事件处理:<div&nbsp;ng-controller="Ctrl"> &nbsp;&nbsp;<div&nbsp;class="thing"&nbsp;ng-repeat="thing&nbsp;in&nbsp;things"&nbsp;my-post-repeat-directive> &nbsp;&nbsp;&nbsp;&nbsp;thing&nbsp;{{thing}}&nbsp;&nbsp;</div></div>function&nbsp;Ctrl($scope)&nbsp;{ &nbsp;&nbsp;$scope.things&nbsp;=&nbsp;[ &nbsp;&nbsp;&nbsp;&nbsp;'A',&nbsp;'B',&nbsp;'C'&nbsp;&nbsp; &nbsp;&nbsp;];}angular.module('myApp',&nbsp;[]).directive('myPostRepeatDirective',&nbsp;function()&nbsp;{ &nbsp;&nbsp;return&nbsp;function(scope,&nbsp;element,&nbsp;attrs)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(scope.$last){ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;iteration&nbsp;is&nbsp;complete,&nbsp;do&nbsp;whatever&nbsp;post-processing &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;is&nbsp;necessary &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;element.parent().css('border',&nbsp;'1px&nbsp;solid&nbsp;black'); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;};});看现场演示。

莫回无

不需要创建指令,特别是只需要创建一个ng-repeat全部事件。ng-init对你有魔力吗。&nbsp;&nbsp;<div&nbsp;ng-repeat="thing&nbsp;in&nbsp;things"&nbsp;ng-init="$last&nbsp;&&&nbsp;finished()">这个$last确保,那finished只有当最后一个元素被呈现到DOM时才会触发。别忘了创造$scope.finished事件。编码愉快!如果您还想调用finished如果数组中没有项,则可以使用以下方法变通<div&nbsp;style="display:none"&nbsp;ng-init="things.length&nbsp;<&nbsp;1&nbsp;&&&nbsp;finished()"></div>//or<div&nbsp;ng-if="things.length&nbsp;>&nbsp;0"&nbsp;ng-init="finished()"></div>只需在ng-repeat元素。它将检查数组是否没有任何值,并相应地调用函数。例如:<div&nbsp;ng-if="things.length&nbsp;>&nbsp;0"&nbsp;ng-init="finished()"></div><div&nbsp;ng-repeat="thing&nbsp;in&nbsp;things"&nbsp;ng-init="$last&nbsp;&&&nbsp;finished()">
随时随地看视频慕课网APP
我要回答