当前位置: 首页 > 面试题库 >

AngularJS访问控制器$ scope从外部

党权
2023-03-14
问题内容
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$ 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';
  });
});


 类似资料:
  • 问题内容: 我正在使用bootstrap-ui更具体地说是模态窗口。我有一个模态表单,我想要的是实例化表单验证对象。所以基本上我是这样做的: 我可以毫无问题地在html文件中看到表单对象,但是,如果我想从控制器访问表单验证对象。它只是向我输出空对象。这是控制器示例: 我无法从控制器访问的原因可能是什么? 问题答案: 仅对于那些未在控制器中使用而是使用的用户,您必须在表单名称之前添加控制器别名。例如

  • 我尝试注入$scope,然后使用,但这不起作用? 有人能提供建议吗?

  • 问题内容: 我已经使用设置了我的控制器 我有一个父/子嵌套控制器的场景。通过使用,我可以毫无问题地访问嵌套html中的父属性,但是我无法弄清楚如何从子控制器中访问父属性。 我试过注入$ scope然后使用,但这不起作用吗? 谁能提供建议? 问题答案: 如果您的HTML如下所示,则可以执行以下操作: 然后您可以按如下方式访问父范围 如果要从视图访问父控制器,则必须执行以下操作: 参见jsFiddle

  • 问题内容: 我正在尝试通过常规函数访问全局变量,这可能吗? 我已经使用$ rootScope设置了一些变量,并且我试图通过回调函数来访问它。从控制器调用此回调。我不想传递该回调。 有什么办法可以访问吗? 我愿意使用服务。 请提出建议。 谢谢 我试图按以下方式访问rootScope: 我的服务是: 它在updateStatus fn下显示isFBLoggedin为true,但未反映在视图上 我正在打

  • 问题内容: 我想在Chrome的JavaScript控制台中访问我的变量。我怎么做? 我既看不到控制台中的模块名称也看不到它的变量。 问题答案: 在开发人员工具的HTML面板中选择一个元素,然后在控制台中输入以下元素: 在WebKit和Firefox中,是对elements选项卡中所选DOM节点的引用,因此通过执行此操作,可以在控制台中打印出所选DOM节点范围。 您还可以按元素ID定位作用域,如下

  • 问题内容: 如何从网页的任何位置(控制器组件外部)调用控制器下定义的函数? 当我按下“获取”按钮时,它可以完美运行。但是我需要从div控制器外部调用它。逻辑是:默认情况下,我的div是隐藏的。在导航菜单中的某个位置,我按了一个按钮,它应该显示()我的div并执行“获取”功能。我该如何实现? 我的网页是: 我的js: 问题答案: 这是从外部调用控制器功能的一种方法: 您的控制器的功能在哪里。 你可以