如何设置AngularJS自定义指令的隔离作用域?

发布于 2022-09-03 15:29:12 字数 699 浏览 16 评论 0

通过设置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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

素手挽清风 2022-09-10 15:29:13

我是这样理解的
scope: true时,产生一个子作用域(child scope),子作用域继承父作用域,它的作用域只包括template里面的代码,这里你没有写;

scope: {}时,产生一个隔离的作用域,其实它也是一个子作用域,不过它并没有继承父作用域,它的作用域范围也只有template里面的代码;

也就是说scope: truescope:{}的作用域都不包括ng-init

还有你的Outside myDirective: {{ myProperty }}Inside myDirective: {{ myProperty }}是一直在同一个作用域的,要使Inside myDirective: {{ myProperty }}隔离,请把它写到template里面,另外ng-init也要写到template里面,才能形成你说的隔离作用域。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文