加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 具有隔离和非隔离示波器的指令内部内容

发布时间:2020-12-17 08:08:26 所属栏目:安全 来源:网络整理
导读:我发现范围相当奇怪的行为:指令内容的真实类型: body ng-init="x=10" mydir {{x}} /mydir /body 所以{{x}}是内容,指令定义是: .directive('mydir',function() { return { scope: {},link: function(scope){ scope.x = 5; } };}); 当我们将scope定义为iso
我发现范围相当奇怪的行为:指令内容的真实类型:
<body ng-init="x=10">
    <mydir>
       {{x}}
    </mydir> 
</body>

所以{{x}}是内容,指令定义是:

.directive('mydir',function() {
   return {
       scope: {},link: function(scope){
           scope.x = 5;
       }
   };
});

当我们将scope定义为isolation(scope:{})时,它将{{x}}输出为10,因此使用外部作用域。但是当我们为该指令(scope:true)创建新的范围时,它将使用它作为内容和输出5.因此,内部内容使用不同的范围2种情况。有人可以给我一个提示/链接来代码/手册解释这个不一致吗?

这是plnk玩代码。

UPD:我明白什么是JavaScript原型继承。我知道指令范围类型之间的区别。而我的目的不是显示5而不是10。问题是关于内部模板,在这两种情况下都应该使用父范围进行内插,该范围不能访问child / isolated的属性。

在您的原始代码段中,{{x}}不属于< mydir>。您应该为该指令定义一个模板。
// js
.directive('mydir',function() {
   return {
       template: '{{x}}',scope: {},link: function(scope){
           scope.x = 5;
       }
   };
});

// html
<body ng-init="x=10">
    <mydir></mydir> 
</body>

这是the preview

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读