How do I access the $scope variable in browser's console using AngularJS?

I would like to access my $scope variable in Chrome's JavaScript console. How do I do that?

I can neither see $scope nor the name of my module myapp in the console as variables.


Pick an element in the HTML panel of the developer tools and type this in the console:

angular.element($0).scope()

In WebKit and Firefox, $0 is a reference to the selected DOM node in the elements tab, so by doing this you get the selected DOM node scope printed out in the console.

You can also target the scope by element ID, like so:

angular.element(document.getElementById('yourElementId')).scope()

Addons/Extensions

There are some very useful Chrome extensions that you might want to check out:

  • Batarang. This has been around for a while.

  • ng-inspector. This is the newest one, and as the name suggests, it allows you to inspect your application's scopes.

  • Playing with jsFiddle

    When working with jsfiddle you can open the fiddle in show mode by adding /show at the end of the URL. When running like this you have access to the angular global. You can try it here:

    http://jsfiddle.net/jaimem/Yatbt/show

    jQuery Lite

    If you load jQuery before AngularJS, angular.element can be passed a jQuery selector. So you could inspect the scope of a controller with

    angular.element('[ng-controller=ctrl]').scope()
    

    Of a button

     angular.element('button:eq(1)').scope()
    

    ... and so on.

    You might actually want to use a global function to make it easier:

    window.SC = function(selector){
        return angular.element(selector).scope();
    };
    

    Now you could do this

    SC('button:eq(10)')
    SC('button:eq(10)').row   // -> value of scope.row
    

    Check here: http://jsfiddle.net/jaimem/DvRaR/1/show/


    To improve on jm's answer...

    // Access whole scope
    angular.element(myDomElement).scope();
    
    // Access and change variable in scope
    angular.element(myDomElement).scope().myVar = 5;
    angular.element(myDomElement).scope().myArray.push(newItem);
    
    // Update page to reflect changed variables
    angular.element(myDomElement).scope().$apply();
    

    Or if you're using jQuery, this does the same thing...

    $('#elementId').scope();
    $('#elementId').scope().$apply();
    

    Another easy way to access a DOM element from the console (as jm mentioned) is to click on it in the 'elements' tab, and it automatically gets stored as $0 .

    angular.element($0).scope();
    

    If you have installed Batarang

    Then you can just write:

    $scope
    

    when you have the element selected in the elements view in chrome. Ref - https://github.com/angular/angularjs-batarang#console

    链接地址: http://www.djcxy.com/p/13586.html

    上一篇: 如何使用$ scope。$ watch和$ scope。$在AngularJS中应用?

    下一篇: 如何使用AngularJS访问浏览器控制台中的$ scope变量?