So auf der Winkel Dokumentations-Website können Sie festlegen, Tobias und JeffWie in einer Richtlinie Link, um den übergeordneten Bereich für den Zugriff auf
angular.module('docsTransclusionExample', [])
.controller('Controller', ['$scope', function($scope) {
$scope.name = 'Tobias';
}])
.directive('myDialog', function() {
return {
restrict: 'E',
transclude: true,
scope: {},
templateUrl: 'my-dialog.html',
link: function (scope, element) {
scope.name = 'Jeff';
}
};
});
Wenn Sie den Namen zu tun ist {{name}} es sagen wird
The name is Tobias
Ich versuche, Tobias in der Link-Funktion zuzugreifen. Wie würde ich innerhalb der Link-Funktion den Wert von $ scope.name gleich Tobias erhalten?
scope.$parent.name = 'Jeff';
Der '$ parent' ist die Antwort, wie in der Antwort von Ufuk Hacıoğulları, aber zweimal überlegen, wenn Sie * wirklich * wollen, dies zu tun - Es bricht die Verkapselung Ihrer Anweisung. Ein viel besserer Ansatz besteht darin, beliebige Daten als Parameter zu übergeben, z. 'scope: {parentName: '='}' und dann ''. –
Danke Nikos! Die Richtlinie arbeitet derzeit mit dem Geltungsbereich: Falsch und ohne Einschluss. Wie würde ich in diesem Fall auf $ scope.name zugreifen? Wäre es nur $ scope.name? Müsste ich $ scope in den Parameter der Link-Funktion übergeben? –
Das Sehen von 'scope: false'" kommuniziert "mir, dass es einen gemeinsamen/flachen" Namespace "zwischen der Direktive und ihrem Elternteil gibt. In diesem Fall macht es keinen Sinn, zwei "Dinge" namens "name" zu haben - es ist wie "Warum kann ich nicht zwei' var's mit demselben Namen in einer JS Funktion haben ". Was ich versuche zu sagen ist, dass Sie darüber nachdenken sollten, ob dies eine Art Neugestaltung benötigt. –