AngularJS访问控制器$范围从外部

var theApp = angular.module('theApp', []); var app = angular.module('theApp', ['ui.bootstrap']); app.controller('MenuSideController', ['$scope','SnazzyService','$modal','$log', function($scope, SnazzyService, $modal, $log) { $scope.user.zoomlvl = '2'; }]); 

我有上面的控制器,它设置$scope ,我只能从里面访问值。

但我看到的地方使用下面我将能够访问$scope但是当我console.log($scope) $scope.user.zoomlvl它不存在。

我不知道如何访问MenuSideController $范围,并用valZoomvariables更新。

 var appElement = document.querySelector('[ng-app=theApp]'); var $scope = angular.element(appElement).scope(); console.log($scope); $scope.$apply(function() { $scope.user.zoomlvl = valZoom; }); 

没有看到标记,我想MenuSideController的范围是你select范围的子范围。

虽然可以像这样遍历树(假设我们想要的范围是第一个孩子):

 var appElement = document.querySelector('[ng-app=theApp]'); var appScope = angular.element(appElement).scope(); var controllerScope = appScope.$$childHead; console.log(controllerScope.user); 

只需select特定控制器所在的元素就简单多了。

假设你正在使用ng-controller指令:

 <body ng-controller="MenuSideController"></body> 

改为:

 var controllerElement = document.querySelector('body'); var controllerScope = angular.element(controllerElement).scope(); console.log(controllerScope.user); 

演示: http : //plnkr.co/edit/WVNDG9sgYgoWaNlrNCVC?p=preview

 angular.element(document).ready(function() { var appElement = document.querySelector('[ng-app=theApp]'); var appScope = angular.element(appElement).scope(); console.log('Traversing from appScope to controllerScope:', appScope.$$childHead.user); var controllerElement = document.querySelector('body'); var controllerScope = angular.element(controllerElement).scope(); console.log('Directly from controllerScope:', controllerScope.user); controllerScope.$apply(function() { controllerScope.user.zoomlvl = '10'; }); });