Я хотел бы получить доступ к области действия родительской директивы, но я не могу получить правильную комбинацию настроек. Возможно ли это, и это правильный подход?Доступ к родительскому охвату в директиве Transcluded
Я действительно хочу, чтобы не ставить что-то вроде SOME_CONST (который помог бы мне сделать DOM обновляется через поток управления) в MyCtrl
<div ng-controller="MyCtrl">
<parent>
<child></child>
</parent>
</div>
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.obj = {prop:'foo'};
}
myApp.directive('parent', function() {
return {
scope: true,
transclude: true,
restrict: 'EA',
template: '<div ng-transclude><h1>I\'m parent {{obj.prop}}<h1></div>',
link: function(scope, elem, attrs) {
scope.SOME_CONST = 'someConst';
}
}
});
myApp.directive('child', function() {
return {
restrict: 'EA',
template: '<h1>I\'m child.... I want to access my parent\'s stuff, but I can\'t. I can access MyCtrlScope though, see <b>{{obj.prop}}</b></h1> how can I access the <b>SOME_CONST</b> value in my parent\'s link function? is this even a good idea? {{SOME_CONST}}. I really don\'t want to put everything inside the MyCtrl',
}
});
Пожалуйста посмотреть fiddle
Благодаря
@Mark Rajcok - Великий ответ Марк, ты похоже, один из немногих людей на этом сайте, который на самом деле полностью понимает Angular. У меня есть вопрос, похожий на этот, но по этой ссылке: [link] (http://stackoverflow.com/questions/23437113/get-property-value-from-parent-directive-within-child-directive). Моя проблема заключается в том, что к моменту, когда метод link работает в дочерней директиве, шаблон дочерней директивы уже был обработан. Это означает, что я не могу использовать родительское свойство внутри дочернего элемента для установки переменных области до рендеринга. –
Это замечательно, но похоже, что это значение скопировано, а не связано (т. Е. Двусторонняя привязка данных). –
Согласитесь, это не двусторонняя привязка данных. Чтобы ответить на исходный вопрос, дочерний контроллер просто должен получить доступ к области. $ Parent и имеет преимущества наследования и двусторонней привязки данных. – CarbonDry