AngularJS访问控制器$scope从外部

前端之家收集整理的这篇文章主要介绍了AngularJS访问控制器$scope从外部前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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';
}]);

我有以上的控制器,它设置一个$范围,我只能访问来自内部的值。

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

我不知道如何访问MenuSideController $ scope并更新valZoom变量。

var appElement = document.querySelector('[ng-app=theApp]');
var $scope = angular.element(appElement).scope();
console.log($scope);
$scope.$apply(function() {
    $scope.user.zoomlvl = valZoom;
});
没有看到标记,我猜想MenuSideController的范围是一个子范围到您选择的范围。

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

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

只需选择连接特定控制器的元素就更简单了。

假设您使用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相关文章