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
.
var appElement = document.querySelector('[ng-app=theApp]');
var $scope = angular.element(appElement).scope();
console.log($scope);
$scope.$apply(function() {
$scope.user.zoomlvl = valZoom;
});
Кажется странным, вы хотели бы сделать это, но если вы получите доступ к объему модуля/ap p, он является предком области, созданной для контроллера, поэтому изменения, которые сделаны в области дочернего/потомка, не будут видны из контекста родителя. Вообще говоря, вы должны использовать функции, определенные в области управления контроллером, для изменения области $. – shaunhusain
Если вы пытаетесь интегрироваться с какой-либо сторонней библиотекой (в частности, с любым типом манипуляций с DOM), вам может быть лучше написать директиву, которая обертывает сторонний код, таким образом вы можете писать вещи, которые взаимодействуют с сторонний код в вашей функции ссылок и соответствующим образом обновить область действия. – shaunhusain
@shaunhusain просто надеется использовать область $ с моего контроллера в другой части сайта, где я могу изменить входное значение при изменении его значения. '$ watch' работает только в том случае, когда вводится ввод, но не когда значение обновляется с помощью' $ ('# zoom'). val (valZoom); ' – ngplayground