其实是用到了$timeout,
//首先需要定义一个directive
directives.directive('onFinishRenderFilters', function ($timeout) {
return {
restrict: 'A',
link: function(scope, element, attr) {
if (scope.$last === true) {
$timeout(function() {
scope.$emit('ngRepeatFinished');
});
}
}
};
});
然后在你需要预加载dom的html片段中使用该directive
<uib-tabset active="activeJustified" class="mt10" on-finish-render-filters>
<uib-tab ng-repeat="item in pigmanage.generallist" heading="{{item.name}}">
<div class="tipcirclebox col-cm-6" ng-repeat = "its in item.tiplist" on-finish-render-filters>
<div id="{{its.id}}" style="width: 500px;height:300px;" ></div>
</div>
</uib-tab>
</uib-tabset>
再结合$scope.$on方法就可以了
$scope.$on('ngRepeatFinished', function (ngRepeatFinishedEvent) {
//下面是在table render完成后执行的js
//debugger;
var myChart = echarts.init(document.getElementById($scope.pigmanage.generallist[0].tiplist[0].id));
console.log(myChart)
// 指定图表的配置项和数据
var option = {
title : {
text: '某站点用户访问来源',
x:'center'
},
tooltip : {
trigger: 'item',
formatter: ""
},
series : [
{
name: '访问来源',
type: 'pie',
radius : '55%',
center: ['50%', '60%'],
data:[
{value:335, name:'直接访问'},
{value:310, name:'邮件营销'},
{value:234, name:'联盟广告'},
{value:135, name:'视频广告'},
{value:1548, name:'搜索引擎'}
],
itemStyle: {
emphasis: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
});