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

当ng-重复完成时调用一个函数。

当ng-重复完成时调用一个函数。

ABOUTYOU 2019-06-18 13:50:54
当ng-重复完成时调用一个函数。我试图实现的基本上是一个“onng重复完成的呈现”处理程序。我能够检测它何时完成,但我不知道如何从它触发一个函数。检查小提琴:http://jsfiddle.net/paulocoelho/BsMqq/3/JSvar module = angular.module('testApp', [])     .directive('onFinishRender', function () {     return {         restrict: 'A',         link: function (scope, element, attr) {             if (scope.$last === true) {                 element.ready(function () {                     console.log("calling:"+attr.onFinishRender);                     // CALL TEST HERE!                 });             }         }     }});function myC($scope) {     $scope.ta = [1, 2, 3, 4, 5, 6];     function test() {         console.log("test executed");     }}HTML<div ng-app="testApp" ng-controller="myC">     <p ng-repeat="t in ta" on-finish-render="test()">{{t}}</p></div>回答*最后一步的工作小提琴:http://jsfiddle.net/paulocoelho/BsMqq/4/
查看完整描述

3 回答

?
慕勒3428872

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

使用$valAsync如果您希望在构造DOM之后,但在浏览器呈现之前执行回调(即test()。这样可以防止闪烁-参考文献.

if (scope.$last) {
   scope.$evalAsync(attr.onFinishRender);}

小提琴.

如果您真的想在呈现后调用回调,请使用$timeout:

if (scope.$last) {
   $timeout(function() { 
      scope.$eval(attr.onFinishRender);
   });}

我更喜欢美元,而不是活动。对于一个事件,我们需要知道事件的名称并为该事件的控制器添加代码。有了$val,控制器和指令之间的耦合就更少了。


查看完整回答
反对 回复 2019-06-18
  • 3 回答
  • 0 关注
  • 496 浏览

添加回答

举报

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