指令范围

nov*_*ain 0 html javascript angularjs

我有一个angular的指令和一个绑定到范围变量的表单.码:

<my-directive></my-directive>

<form>
    <input ng-model="username" required>
</form>
Run Code Online (Sandbox Code Playgroud)

指示:

.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"
  }
})
Run Code Online (Sandbox Code Playgroud)

用户名变量可以在我的指令中的控制器内部到达.这不是我预期的原因,因为我关闭指令并且他们不应该共享相同的范围?

为什么这样做?

Ani*_*bhi 5

那你正在使用scope:false.它可以访问和更改它的父范围.

因此,您的节点范围在此处无关紧要,因为username它位于父范围内.

<my-directive></my-directive>

<form>
    <input ng-model="username" required>
</form>
Run Code Online (Sandbox Code Playgroud)

如果您不想访问父作用域,则创建一个隔离范围

像这样

.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"
  }
})
Run Code Online (Sandbox Code Playgroud)