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
$范围,并用valZoom
variables更新。
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'; }); });
- AngularJS中的$ scope是什么?
- ScrollTo在AngularJS中的function
- unit testing有依赖关系的AngularJS工厂
- 如何用多个参数在angularjs中发送POST?
- 在angularjs中,我们有ng-disabled指令,为什么ng-enabled指令不是由框架提供的,因为我们有ng-show和ng-hide
- AngularJS $ http-post – 将二进制文件转换为excel文件并下载
- 在AngularJs中设置dynamic范围variables – <some_string>
- 如何使用angularjs检查表单有效性?
- 没有包含<form>的AngularJS <input>validation