باتشکر مشکل حل شد. در Directive ngFinishRender به دلیل استفاده از سرویس timeout$، فراخوانی تابع بعد از اجرای کامل چرخه Digest$ انجام میشود این کار باعث رندر شدن کامل داده بازگشتی میشود. برای شفاف شدن موضوع کد مربوطه را اینجا میگذارم
<script type="text/ng-template" id="menu"> {{item.caption}} -- <b>{{level}}</b> <ul ng-if="item.child.length > 0"> <li id="{{item.caption}}" ng-finish-render="doWork()" ng-repeat="item in item.child" ng-include="'menu'" ng-init="level = level + 1"></li> </ul> </script>
<div class="well"> <ul> <li id="{{item.caption}}" ng-repeat="item in data" ng-include="'menu'" ng-init="level = level + 1" ng-finish-render="doWork()"></li> </ul> </div>
$scope.doWork = function(){ console.log($('#item2_1')); } $scope.level = 0; $scope.data = [ { caption:'root', child:[ { caption:'item1', child:[{ caption:'item1_1', child:[{ caption:'item1_1_1' }] },{ caption:'item1_1' }] }, { caption:'item2', child:[{ caption:'item2_1', child:[{ caption:'item2_1_1' }] }] } ] } ];