angularjsangularjs-scope

Get DOM element by scope $id


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 element using the scope $id, such as 003?

I'd like to do this for debugging purposes. My scope tree shows something and I'd like to identify where it came from.


Solution

  • Although it's not very sexy each dom node gets a class ng-scope so you could tech do something like this maybe:

    function getScope(id) {
    var elem;
    $('.ng-scope').each(function(){
        var s = angular.element(this).scope(),
            sid = s.$id;
    
        if(sid == id) {
            elem = this;
            return false; // stop looking at the rest
        }
    });
    return elem;
    }