Get DOM element by scope $id

前端 未结 4 1899
死守一世寂寞
死守一世寂寞 2020-12-08 02:37

I understand I can get the scope by element:

scope = angular.element($0).scope();
scope.$id; // \"003\"

How do I get reverse: Find the DOM

4条回答
  •  孤街浪徒
    2020-12-08 03:05

    Trying out the answer, I found that directives don't seem to have the class ng-scope, so here's a modified version that'll fallback to everything.

    var getByScopeId = function(id) { 
        var filterfn = function(i,el) {
            var sc = angular.element(el).scope();
    
            return sc && sc.$id == id;
        };
        // low hanging fruit -- actual scope containers
        var result = $('.ng-scope').filter(filterfn);
        if(result && result.length) return result;
    
        // try again on everything...ugh
        return $(':not(.ng-scope)').filter(filterfn);
    }
    

    Usage:

    var results = getByScopeId('003')
    

提交回复
热议问题