47

How to access the scope variable widgets from chrome's console

function MyCntrl($scope) {
    $scope.widgets = [
        {text:'Widget #1', datarow:1, datacol:1, datasizex:3, datasizey:3},
        {text:'Widget #2', datarow:2, datacol:1, datasizex:3, datasizey:3},
        {text:'Widget #3', datarow:1, datacol:2, datasizex:3, datasizey:3},
        {text:'Widget #4', datarow:2, datacol:2, datasizex:3, datasizey:3}
    ];

Something like $scope.widgets simply doesn't work in the console!

4

5 回答 5

34

this is a way of getting at scope without batarang. Assuming you have references to jquery and angular on your page, you can do:

var scope = angular.element($('#selectorId')).scope();

or if you want to find your scope by controller name, do this:

var scope = angular.element($('[ng-controller=myController]')).scope();

After you make changes to your model, you'll need to apply the changes to the DOM by calling

scope.$apply();
于 2014-06-04T17:04:55.693 回答
31

The scope is bound to the DOM so you need to grab an element and use some angular code to get the scope.

Your best bet is to get an element that the Controller is bound to and have a look at the scope on that.

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

于 2013-03-27T16:07:28.197 回答
17

You can either follow the asnwer of Will or install Angular Batarang Chrome extension. This will not only allow you to view and manipulate '$scope' object from, let's say your JavaScript console, but also it's a fundamental tool when developing complex AngularJS apps.

于 2013-03-27T17:56:46.517 回答
4

Here is one Example: I have following DOM on my angular Single Page application:

<div ng-controller="usersAppController as uac" class="ng-scope">
    <div class="tab ng-scope is-normal is-active" id="rolesTab" ref="tabs" mode="normal" target-ref="rolesContent" xng-locals="xng.userApp.roles">Roles
    </div>
</div>

and this div is present in the controller name usersAppController as uac Above here I have controller as syntax

Also note down that I am using jQuery in my application:

$($0).controller() method will give me a direct access to the uac object which is on the $scope object.

$($0).scope() will give me prototype chain for the element I have selected and if I follow that chain I will find my scope object on that element.

于 2016-01-15T14:51:32.630 回答
0

You can first select an element from the DOM that's within the scope you want to inspect:

enter image description here

Then you can view the scope object by querying the following in the console:

angular.element($0).scope()

You can query any property on the scope, e.g.:

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

Or you can inspect the controller attached to the scope:

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

于 2021-09-30T05:24:59.873 回答