这是我的代码:
// 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
这是一个非常愚蠢的问题,因为我以前总是使用隔离范围,所以忘记使用范围内的指令,阅读文档并清楚地理解.谢谢你的回答