Задать вопрос

Как быть если две директивы создают изолированный scope?

Проблема возникла при использовании двух разных деректив которые создают изолированый scope в каждом случае. Как решить эту проблему?

Error Reference
  • Вопрос задан
  • 2695 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Если вы обратите внимание на текст ошибки, там очень доходчиво разьясняются возможные пути решения. Если директива требует изолированный скоуп, то на то должны быть веские причины, и обычно на один элемент две такие директивы никто не вешает (я не могу придумать сходу юзкейсов). Так же при использовании templateUrl так же создается изолированный скоуп, но тут проще - это не логично использовать две такие директивы на одном элементе.

Было бы проще ответить на ваш вопрос, если бы было известно о каких директивах идет речь.
Ответ написан
Комментировать
@Mr_Pukin Автор вопроса
К сожалению я не понимаю в каких случаях уместно использовать изолированный скоуп, а в каких нет :/

Я навешиваю валидацию на элемент + хочу также отдельно трекать другие изменения скоупа используя watch(например состояние dirty и тд.), делаю это подобным образом через изолированый скоуп из-за этого и проблема. И поместить все в одну директиву как то не правильно так как ngValidInput отвечает за влидацию элемента, а другая деректива просто подсвечивает когда поле стало dirty...

.directive('ngValidInput', function () {
    return {
        scope: {
            input: '=ngValidInput'
        },
        link: function (scope, el, attr) {
            scope.$watch('input.$viewValue', function () {
                scope.input.$invalid && scope.input.$dirty ? el.show() : el.hide();
            });
        }
    };
})
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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