angular html 立即执行_HTML加载后调用函数AngularJS

Guys I have the following directive :

angular.module('blah').directive('someDirective', function () {

return {

scope: {

arrayParam1: '=arrayParam1',

arrayParam2: '=arrayParam2'

},

restrict: 'E',

templateUrl: '/my/path/to/someDirective.tpl.html',

link: function (scope, elem, attrs) {

//Some logic

scope.someEvent = function(){

//some logic

}

scope.$on('$viewContentLoaded', function () {

debugger;

scope.someEvent();

});

}

};

});

Now in the HTML I have a ng-repeat over one of the arrays(arrayParam1 for example) and I am display some stuff. Now my goal as you can assume is to trigger the scope.someEvent after the HTML is completely loaded (finished with the iterations of ng-repeat).

Well when I use the $on it does not even stop on the debugger. If I change it to $watch it does stop after all the code is finished in the JS but the HTML is still not rendered and it triggers the even I want before the view is done.

Thanks in advance.

解决方案

use $timeout.

$timeout(function () {

scope.someEvent();

});

this will help.

or if you don't want to use $timeout what you have to do is make another directive parent to this directive and execute or trigger the function in parents link phase

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值