Ich möchte auf den Geltungsbereich einer übergeordneten Richtlinie zugreifen, aber ich kann nicht die richtige Kombination von Einstellungen erhalten. Ist das möglich und ist es der richtige Ansatz?Access Parent Scope in abgeleiteter Direktive
Ich möchte wirklich vermeiden, so etwas wie SOME_CONST setzen (was mich DOM Flow aktualisiert durch die Kontrolle machen würde helfen) in 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',
}
});
finden Sie in diesem fiddle
Dank
@ Mark Rajcok - Große Antwort Mark, Sie scheinen einer der wenigen Leute auf dieser Seite zu sein, die Angular wirklich vollständig verstehen. Ich habe eine ähnliche Frage, aber unter diesem Link: [link] (http://stackoverflow.com/questions/23437113/get-property-value-from-parent-directive-within-child-directive). Mein Problem ist, dass zu dem Zeitpunkt, zu dem die Link-Methode für die Child-Direktive ausgeführt wird, die Vorlage der Child-Direktive bereits gerendert wurde. Das bedeutet, dass ich die Elterneigenschaft innerhalb des untergeordneten Elements nicht verwenden kann, um Bereichsvariablen vor dem Rendern festzulegen. –
Dies ist großartig, aber es scheint, dass dieser Wert kopiert wird, anstatt gebunden (dh Zwei-Wege-Datenbindung) –
Zustimmen, das ist nicht bidirektionale Daten gebunden. Um die ursprüngliche Frage zu beantworten, muss der Kind-Controller einfach auf den Bereich. $ Parent zugreifen und er hat die Vorteile der Vererbung und der bidirektionalen Datenbindung. – CarbonDry