ng-repeat finish event

前端 未结 15 2634
盖世英雄少女心
盖世英雄少女心 2020-11-22 02:15

I want to call some jQuery function targeting div with table. That table is populated with ng-repeat.

When I call it on

$(document).r         


        
15条回答
  •  不思量自难忘°
    2020-11-22 02:35

    Here is a repeat-done directive that calls a specified function when true. I have found that the called function must use $timeout with interval=0 before doing DOM manipulation, such as initializing tooltips on the rendered elements. jsFiddle: http://jsfiddle.net/tQw6w/

    In $scope.layoutDone, try commenting out the $timeout line and uncommenting the "NOT CORRECT!" line to see the difference in the tooltips.

    
    

    JS:

    angular.module('Repeat_Demo', [])
    
        .directive('repeatDone', function() {
            return function(scope, element, attrs) {
                if (scope.$last) { // all are rendered
                    scope.$eval(attrs.repeatDone);
                }
            }
        })
    
        .filter('strip_http', function() {
            return function(str) {
                var http = "http://";
                return (str.indexOf(http) == 0) ? str.substr(http.length) : str;
            }
        })
    
        .filter('hostName', function() {
            return function(str) {
                var urlParser = document.createElement('a');
                urlParser.href = str;
                return urlParser.hostname;
            }
        })
    
        .controller('AppCtrl', function($scope, $timeout) {
    
            $scope.feedList = [
                'http://feeds.feedburner.com/TEDTalks_video',
                'http://feeds.nationalgeographic.com/ng/photography/photo-of-the-day/',
                'http://sfbay.craigslist.org/eng/index.rss',
                'http://www.slate.com/blogs/trending.fulltext.all.10.rss',
                'http://feeds.current.com/homepage/en_US.rss',
                'http://feeds.current.com/items/popular.rss',
                'http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml'
            ];
    
            $scope.layoutDone = function() {
                //$('a[data-toggle="tooltip"]').tooltip(); // NOT CORRECT!
                $timeout(function() { $('a[data-toggle="tooltip"]').tooltip(); }, 0); // wait...
            }
    
        })
    

提交回复
热议问题