2016-04-02 11 views
0

Ich habe eine Direktive in eckigen und eine Form, die an eine Scope-Variable gebunden ist. Code: Direktive scope

<my-directive></my-directive> 

<form> 
    <input ng-model="username" required> 
</form> 

Richtlinie:

.directive('myDirective', function(){ 
    restrict : 'E', 
    controller: function($scope){ 
     console.log($scope.username); // Displays user name, same scope!!! 
    }, 
    link: function(scope, element, attrs){ 
     // Other codes 
    }, 
    templateUrl: "templates/my-template-url.html" 
    } 
}) 

Der Benutzername Variable kann in der Steuerung in meiner Richtlinie zu erreichen. Dies ist nicht der Grund, warum ich erwartet habe, seit ich die Richtlinie geschlossen habe, und sie sollten nicht denselben Geltungsbereich haben.

Warum funktioniert das?

Antwort

5

Nun, Sie verwenden scope:false. Es kann auf den übergeordneten Bereich zugreifen und diesen ändern.

Damit ist Ihr Knotenbereich hier nicht wichtig, weil username in seinem übergeordneten Bereich ist.

<my-directive></my-directive> 

<form> 
    <input ng-model="username" required> 
</form> 

Wenn Ihr will nicht geordneten Bereich zuzugreifen dann ein Isolat Bereich erstellen

Like this

.directive('myDirective', function(){ 
    restrict : 'E', 
    scope : {}, 
    controller: function($scope){ 
     console.log($scope.username); // Displays user name, same scope!!! 
    }, 
    link: function(scope, element, attrs){ 
     // Other codes 
    }, 
    templateUrl: "templates/my-template-url.html" 
    } 
}) 
Verwandte Themen