gpt4 book ai didi

AngularJS 从外部访问 Controller $scope

转载 作者:行者123 更新时间:2023-12-03 06:50:16 27 4
gpt4 key购买 nike

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';
}]);

我有上面的 Controller ,它设置了一个 $scope 我只能从内部访问值。

但我在某处看到,使用下面的内容我可以访问 $scope 但当我 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);

仅选择附加特定 Controller 的元素会更简单。

假设您正在使用 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 从外部访问 Controller $scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22570357/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com