Как получить доступ к переменной $ scope в angular из консоли Chrome
Как получить доступ к виджетам переменных области из консоли Chrome
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}
];
Что-то вроде $scope.widgets
просто не работает в консоли!
Ответы
Ответ 1
Область привязки привязана к DOM, поэтому вам нужно захватить элемент и использовать некоторый код angular для получения области.
Лучше всего получить элемент, к которому привязан Контроллер, и взглянуть на область действия.
Вот ответ
Как получить доступ к переменной $scope в консоли браузера, используя AngularJS?
Ответ 2
Это способ получить доступ к пробегу без batarang. Предполагая, что у вас есть ссылки на jquery и angular на вашей странице, вы можете сделать:
var scope = angular.element($('#selectorId')).scope();
или если вы хотите найти свою область действия по имени контроллера, сделайте следующее:
var scope = angular.element($('[ng-controller=myController]')).scope();
После внесения изменений в модель вам необходимо применить изменения к DOM, вызвав
scope.$apply();
Ответ 3
Вы можете либо следовать за Аньере Воли, либо установить Angular Batarang расширение Chrome. Это позволит не только просматривать и обрабатывать объект "$ scope", скажем, вашу консоль JavaScript, но и это фундаментальный инструмент при разработке сложных приложений AngularJS.
Ответ 4
Вот один пример. У меня есть следующая DOM в моем приложении angular Single Page:
<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>
и этот div присутствует в имени контроллера usersAppController как uac
Выше здесь я имею контроллер как синтаксис
Также обратите внимание, что я использую jQuery в своем приложении:
Метод $($ 0).controller() даст мне прямой доступ к объекту uac, который находится в объекте $scope.
$($ 0).scope() даст мне цепочку прототипов для выбранного мной элемента, и если я последую этой цепочке, я найду объект области видимости для этого элемента.
Ответ 5
Помимо традиционных консольных команд. Я также считаю, что этот хром-плагин очень удобен. Просто выберите элемент, который вы хотите проверить, и перейдите к плагину, чтобы увидеть область /vars для этой области.
https://chrome.google.com/webstore/detail/angularjs-batarang-stable/niopocochgahfkiccpjmmpchncjoapek