#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. Не могли бы вы, пожалуйста, привести мне пример того, как бы вы это сделали? Я не совсем понял