Получить родительский массив области видимости в директиве

#angularjs #angularjs-directive #angularjs-scope

#angularjs #angularjs-директива #angularjs-область видимости

Вопрос:

Извините, если это дубликат, но я не могу найти решение.

У меня есть следующее:

 appDrct.directive('jsonArray', [function () {
    return {
        link: function (scope, element, attrs, ctrl) {
            console.log(scope.$parent.categories);
        }
    };
}]);
 

Что дает мне пустой массив (категории не пусты). Если я напечатаю это: console.log(scope.$parent); , я смогу увидеть свой массив с элементами внутри! Почему это так? И как я могу получить свой массив?

Редактировать: он находится в модальном представлении…

 div(class="modal-header")
   div(json-array='categories')
 

Комментарии:

1. Тогда это должно сработать … кроме того, scope.categories должно сработать также — область будет выглядеть до родительской

2. Можете ли вы также опубликовать HTML-код? Происходит что-то еще, чего мы не видим.

Ответ №1:

используйте просто scope.categories

scope.$parent.categories — было бы правильно, только если у вас есть scope: true для вашей директивы

Комментарии:

1. Все еще получаю пустой массив !?!?!

2. @ncohen вероятно, у вас что-то не так в другом месте: plnkr.co/edit/wXHlwZEhf7OnLlXRF8vS?p=preview

3. Может быть, это потому, что div (json-array) находится в модальном представлении?

4. @ncohen да, в случае, если вы используете ui-bootstrap modal , по умолчанию область просмотра будет создана как дочерняя для $rootScope, поэтому доступа к вашей области не будет. но вы можете изменить это поведение, передав свою область в модальную конфигурацию (тогда область для модальной будет создана как дочерняя переданная область).

5. Ах, вот оно что… Я использую ui-bootstrap. Не могли бы вы, пожалуйста, привести мне пример того, как бы вы это сделали? Я не совсем понял