为了账号安全,请及时绑定邮箱和手机立即绑定

吴-重复完成活动

吴-重复完成活动

吴-重复完成活动我想用表调用一些针对div的jQuery函数。该表由ng-repeat.当我召唤它的时候$(document).ready()我没有结果。也$scope.$on('$viewContentLoaded', myFunc);帮不上忙。有什么方法可以在ng重复填充完成后立即执行函数吗?我读过关于使用自定义的建议directive但我不知道怎么用它和我的dv.
查看完整描述

3 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

实际上,您应该使用指令,并且不存在与ng-重复循环结束相关联的事件(因为每个元素都是单独构造的,并且具有自己的事件)。但是,使用指令可能是您所需要的全部;(B)您可以使用一些ng-重复特定属性来使您的“onngRepeat Finish”事件。

具体来说,如果您只想将事件样式/添加事件添加到整个表中,那么可以在包含所有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');
  };});

在这里看到它的作用柱塞..希望能帮上忙!


查看完整回答
反对 回复 2019-06-18
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

如果您只是想在循环结束时执行一些代码,那么这里有一个稍微简单一些的变体,它不需要额外的事件处理:

<div ng-controller="Ctrl">
  <div class="thing" ng-repeat="thing in things" my-post-repeat-directive>
    thing {{thing}}  </div></div>
function Ctrl($scope) {
  $scope.things = [
    'A', 'B', 'C'  
  ];}angular.module('myApp', []).directive('myPostRepeatDirective', function() {
  return function(scope, element, attrs) {
    if (scope.$last){
      // iteration is complete, do whatever post-processing
      // is necessary
      element.parent().css('border', '1px solid black');
    }
  };});

看现场演示。


查看完整回答
反对 回复 2019-06-18
?
莫回无

TA贡献1865条经验 获得超7个赞

不需要创建指令,特别是只需要创建一个ng-repeat全部事件。

ng-init对你有魔力吗。

  <div ng-repeat="thing in things" ng-init="$last && finished()">

这个$last确保,那finished只有当最后一个元素被呈现到DOM时才会触发。

别忘了创造$scope.finished事件。

编码愉快!

如果您还想调用finished如果数组中没有项,则可以使用以下方法变通

<div style="display:none" ng-init="things.length < 1 && finished()"></div>//or<div ng-if="things.length > 0" ng-init="finished()"></div>

只需在ng-repeat元素。它将检查数组是否没有任何值,并相应地调用函数。

例如:

<div ng-if="things.length > 0" ng-init="finished()"></div><div ng-repeat="thing in things" ng-init="$last && finished()">


查看完整回答
反对 回复 2019-06-18
  • 3 回答
  • 0 关注
  • 632 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信