如何设置AngularJS自定义指令的隔离作用域?
通过设置scope
属性我们可以给angularJS的自定义属(false
true
{}
)性设置不同范围的作用域。
HTML:
<div>
Outside myDirective: {{ myProperty }}
<div my-directive ng-init="myProperty='Hello world!'">
Inside myDirective: {{ myProperty }}
<div>
</div>
JS:
angular.module('myApp', [])
.directive('myDirective', function() {
return {
restrict: 'A',
scope: {}
};
})
设置为{}
时,自定义指令里为外界形成隔离作用域,期望中应该是外部的myProperty
为空值,可是却也能输出 Hello wolrd!
请教为何,谢谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我是这样理解的
scope: true
时,产生一个子作用域(child scope),子作用域继承父作用域,它的作用域只包括template
里面的代码,这里你没有写;scope: {}
时,产生一个隔离的作用域,其实它也是一个子作用域,不过它并没有继承父作用域,它的作用域范围也只有template
里面的代码;也就是说
scope: true
和scope:{}
的作用域都不包括ng-init
还有你的
Outside myDirective: {{ myProperty }}
和Inside myDirective: {{ myProperty }}
是一直在同一个作用域的,要使Inside myDirective: {{ myProperty }}
隔离,请把它写到template
里面,另外ng-init
也要写到template
里面,才能形成你说的隔离作用域。