@schurin
Люблю катать с гор, особенно на санках

Почему появляется лишний $scope?

Добрый день!
Имеем модальное окно с динамическим контентом, интересно, почем между контроллером модального окна и контроллером контента появляется лишний $scope
<div class="lightbox" ng-controller="ModalCtrl as ctrl" ng-show="show">
        <div ng-include="tplUrl" class="max-height max-width"></div>
</div>

define(['app'], function(app) {
	app.controller('ModalCtrl', ['$scope', 'outerConfig', function($scope) {
		$scope.$on('modal', function(e, options) {
			$scope.tplUrl = (options.tplUrl || 'app/modal/tpl.html');
$scope.callback = options.callback;
		});
	}]);
});


Что я имею ввиду?
Если мы вызовем $broadcast('modal', options) --> внутри единственного обработчика ModalCtrl заменим tplUrl --> подгрузится новая view, у которой собственный контроллер, назовём NewCtrl, получаем новый $scope унаследованный от ModalCtrl, неожиданностью стало, что внутри контроллера NewCrtl callback который мы положили в $scope ModalCtrl, будет доступен через $scope.$parent.$parent.callback, вместо $scope.$parent.callback
От куда лишний родитель?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
@lega
ng-include создаёт дочерний scope (для того чтобы можно было прибить старый дочерний scope когда вы смените шаблон), в Angular Light такой проблемы нет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы