【问题标题】:trigger function after ng-repeatng-repeat 后触发函数
【发布时间】:2013-11-27 13:09:49
【问题描述】:

我是 Angular 的新手,我想做一个非常基本的例子。 在使用ng-repeat 显示一些数据后,我想将其中一些数据与 javascript 函数一起使用。但我不知道何时执行 javascript,因为我不知道 angular 何时完成显示我的数据。

Here is a fiddle: 我尝试使用函数getAssign3 显示一些由 Angular 显示的数据的警报。我应该什么时候调用这个函数?

代码:

<div ng-app="Test">
    <h1>Results Table</h1>
    <div ng-controller="AssignmentCtrl">
          <span ng-repeat="assign in assignments">
             <span id="{{assign.id}}">{{assign.title}}</span>
              <br/> 
        </span>
</div>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.2/angular.min.js"></script>

更多代码:

var test = angular.module("Test", []);

function AssignmentCtrl($scope, $http, $timeout) {
    $scope.fetch = function () {
        // -- Mock server data..
        var data = [{id: 1,title: "Math 1",
                    },{id: 2, title: "Math 2",
                    }, { id: 3,title: "Math 3",
                    }];
         $scope.assignments = data;
    };
    $scope.fetch();
}

getAssign3 = function(){
    var dd = $("#3").text(); 
    alert(dd);
}
getAssign3();

【问题讨论】:

标签: javascript jquery angularjs angularjs-ng-repeat


【解决方案1】:

你必须在你的控制器中添加一个 $on 捕手:

$scope.$on('ngRepeatFinished'), function (ngRepeatFinishedEvent) {
      console.log "After loop";
}

您的 app.js 中的指令:

.directive('onFinishRender', function($timeout) {
    return {
      restrict: 'A',
      link: function(scope, element, attr) {
        if (scope.$last) {
          return $timeout (function() {
            scope.$emit 'ngRepeatFinished'
          });
       }
    }
})

在你看来:

on-finish-render="myFunc()"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多