Angular. Как добавить scope у директивы и при этом иметь доступ к переменной из scope контроллера?

Есть контроллер и директива.

У контроллера есть переменная $scope.cntrlVar = 123;

Если определить директиву со scope = false, то директива может менять значение cntrVar. А если указать для директирвы scope, например так
scope:{
    directiveVariable: '@'
}


То получить доступ к cntrVar директива уже не может.

Как сделать так, чтобы можно было получить доступ? Ко всему контроллеру не нужно, достаточно одной переменной.

P.S решение через события не предалагать.
  • Вопрос задан
  • 2818 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Читаем про изолированные скоупы: https://docs.angularjs.org/guide/directive#isolati...

<div my-directive="cntrVar"></div>

angular
    .module('app')
    .directive('myDirective', function () {
        return {
            scope: {
                myVar: '=myDirective' // или через @, зависит от того что вам нужно
            },
            link: function (scope, el, attr) { 
                scope.$watch('myVar', function (ctrlVal) {
                    console.log(ctrlVal);
                });
            }
        };
    });
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Присмотритесь к
scope.$parent
В случае, если директива находится сразу внутри контроллера scope.$parent будет указывать на scope контроллера.

Хотя я не считаю это хорошим решением. Если директива будет просто так обращаться в другой scope, то, возможно, Вам нужно пересмотреть архитектуру ...
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы