AngularJs--ng-repeate渲染完毕后执行的代码

AngularJs呈现页面的原理
AnguarJs提供了一些对于Html进行加强的语义标签(directive),这些标签在浏览器加载完页面后被执行。举例来说:

<div ng-controller="ctrl2">
    <input type="text" ng-model="page">
    <div repeat-finish ng-repeat="i in [1,2,3,4,5]">
        {{i}}
        <div ng-repeat="j in [1,2,3,4]">
            <div class="a{{i}}b{{j}}">
                son:{{i}}b{{j}}
            </div>
        </div>
    </div>
</div>

上面的ng-repeat,就是一个directive, 相当于一个for循环。在页面加载完成后,AngularJs会遍历users数据对象,来呈现(render)出这个table中的内容。

如何实现在render完成之后,执行Js脚本
当我们使用Jquery结合AngulraJs使用的时候,希望在render完table后,执行一段js脚本,把JqTable应用到该table上。在实际开发中,会经常碰到这样的需求,希望能够捕获到AngularJs渲染完成页面的事件。
要达到这个目的,我们需要为当前的app自定义directive:

app.directive("repeatFinish",function ($timeout) {
    return function ($scope, $element,$attrs) {
        if($scope.$last==true){
            $element.append("<hr/>");
            $timeout(function() {
                $scope.$emit('ngRepeatFinished');
            });
        }
    }
})

最后,补充上我们需要render完成之后的Js脚本:

app.controller('ctrl2',function ($scope) {
    $scope.page = 'b2'
    $scope.$on('ngRepeatFinished', function () {
        $scope.$watch("page",function () {
            for(var i=1; i<=5;i++){
                $(".a"+i+$scope.page).css("background","yellow");
            }
        })
    });
});
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值