小编Nea*_*ped的帖子

AngularJS指令控制器的语法和范围

这是我的代码:

// HTML

<body>
  <h1>{{foo.name}}</h1>

  <my-directive></my-directive>
</body>
Run Code Online (Sandbox Code Playgroud)

//脚本

app.directive('myDirective', function() {
return {
    restrict: 'E',
    replace: true,
    scope: true,  //**********
    template: '<h4>{{foo.name}}</h4>',
    controllerAs: 'foo',
    controller: fooCtrl,
    link: function(scope) {
        console.log(scope);
    }
}
});

var fooCtrl = function() {
    this.name = 'FOO';
}
Run Code Online (Sandbox Code Playgroud)

我的问题:

如果我使用controllerAs语法并且未在myDirective中设置scope:true,则控制器将变为全局,因此控制器将foo.name插入Tag.但是一旦我将范围设置为true,控制器将仅应用于myDirective.

怎么会发生这种情况?内部指令中的控制器是否创建了一个从周围范围继承的新范围?为什么它适用于全球?

UPDATE

这是一个非常愚蠢的问题,因为我以前总是使用隔离范围,所以忘记使用范围内的指令,阅读文档并清楚地理解.谢谢你的回答

javascript angularjs angularjs-directive

3
推荐指数
1
解决办法
3138
查看次数