如何监听angularjs列表数据是否渲染完毕

 我来答
恋圈圈儿
2015-10-30 · TA获得超过3.7万个赞
知道大有可为答主
回答量:6318
采纳率:91%
帮助的人:570万
展开全部
使用Jquery结合AngulraJs使用的时候,在render完table后,执行一段js脚本,把JqTable应用到该table上,能够捕获到AngularJs渲染完成页面的事件。
要达到这个目的,需要为当前的app自定义directive:
app.directive('onFinishRenderFilters', function ($timeout) {
return {
restrict: 'A',
link: function(scope, element, attr) {
if (scope.$last === true) {
$timeout(function() {
scope.$emit('ngRepeatFinished');
});
}
}
};
});
然后,在需要监控的地方,加上该directive:
<tr ng-repeat="user in users" on-finish-render-filters>
<td>{{user.Id}}</td>
<td>{{user.Name}}</td>
<td>{{user.Salary}}</td>
</tr>
最后,补充上需要render完成之后的Js脚本:
$scope.$on('ngRepeatFinished', function (ngRepeatFinishedEvent) {
//下面是在table render完成后执行的js
var table = $("#leaderBoard").dataTable({
bJQueryUI: true,
"sScrollX": '100%',
});
});
百度网友e2d7ae3
2015-07-14 · TA获得超过2207个赞
知道大有可为答主
回答量:1287
采纳率:0%
帮助的人:1609万
展开全部
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<script src="angular.min.js"></script>
<script>
var myApp = angular.module("myApp", []);
    myApp.directive('isOver',function(){
return {
restrict: 'A',
scope: {
over: '=isOver'
},
link:function(scope, elm, attr){
if(scope.$parent.$last){
scope.over = true;
}
}
}
    });
    myApp.controller("testCtrl", function($scope){
        $scope.items = [0,1,2,3,4];
$scope.toggle = {
now:false
};
$scope.$watch('toggle.now',function(){
if($scope.toggle.now)
console.log('game over!');
});
    });
</script>
</head>
 
<body>
<div ng-app="myApp">
  <div ng-controller="testCtrl">
    <ul>
      <li ng-repeat="item in items" is-over="toggle.now" >{{item}}</li>
    </ul>   
  </div>
</div>
</body>
</html>
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式