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

前端之家收集整理的这篇文章主要介绍了angularjs – 具有隔离和非隔离示波器的指令内部内容前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我发现范围相当奇怪的行为:指令内容的真实类型:
<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

猜你在找的Angularjs相关文章