gpt4 book ai didi

angularjs - 具有隔离和非隔离范围的指令内部内容

转载 作者:行者123 更新时间:2023-12-03 14:17:36 24 4
gpt4 key购买 nike

我发现 的行为很奇怪范围:真指令内部内容的类型:

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

所以 {{x}} 是内部内容,指令定义是:
.directive('mydir', function() {
return {
scope: {},
link: function(scope){
scope.x = 5;
}
};
});

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

这里是 plnk玩代码。

更新 : 我明白什么是 JavaScript 原型(prototype)继承。我知道指令范围类型之间的区别。我的目标不是显示 5 而不是 10。问题是关于内部模板,在这两种情况下都应该插入父范围,它不能访问子/隔离的属性。

最佳答案

在您的原始代码片段中,{{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 - 具有隔离和非隔离范围的指令内部内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34917448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com