通过设置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!
请教为何,谢谢
我是这样理解的
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
里面,才能形成你说的隔离作用域。