【发布时间】:2014-05-05 20:42:30
【问题描述】:
这是我的代码:
// HTML
<body>
<h1>{{foo.name}}</h1>
<my-directive></my-directive>
</body>
// 脚本
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';
}
我的问题:
如果我使用controllerAs 语法并且没有在myDirective 中设置scope: true,控制器将变为全局,因此控制器会将foo.name 插入Tag。但是一旦我将范围设置为 true,控制器将仅适用于 myDirective。
这怎么会发生?指令内部的控制器是否会创建一个从周围范围继承的新范围?为什么它会应用于全球?
更新
这是一个非常愚蠢的问题,因为我之前总是使用隔离范围,所以忘记指令内部范围的使用,阅读文档并清楚地理解。谢谢解答
【问题讨论】:
标签: javascript angularjs angularjs-directive