指令范围

时间:2016-04-02 08:24:55

标签: javascript html angularjs

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

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

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

为什么这样做?

1 个答案:

答案 0 :(得分: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"
  }
})