2016-04-02 5 views
0

私は、角度の指示文とスコープ変数にバインドされた書式を持っています。コード:ディレクティブスコープ

<my-directive></my-directive> 

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

指令:

.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" 
    } 
}) 

ユーザ名変数は、私の指示で、コントローラ内部で到達することができます。これは私がディレクティブを閉じてから同じ範囲を共有するべきではないと私が期待した理由ではありません。

これはなぜ機能しますか?

答えて

5

まあ、scope:falseを使用しています。親スコープにアクセスして変更することができます。

したがって、usernameが親スコープにあるため、ノードスコープはここで重要ではありません。

<my-directive></my-directive> 

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

あなたが親スコープにアクセスするにはしたくない場合は、この

.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" 
    } 
}) 
と同様の単離範囲

を作成