首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >包含隔离和非隔离作用域的指令内部内容

包含隔离和非隔离作用域的指令内部内容
EN

Stack Overflow用户
提问于 2016-01-21 15:10:39
回答 3查看 358关注 0票数 15

我发现了作用域的一个相当奇怪的行为:指令内部内容的真正类型:

代码语言:javascript
复制
<body ng-init="x=10">
    <mydir>
       {{x}}
    </mydir> 
</body>

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

代码语言:javascript
复制
.directive('mydir', function() {
   return {
       scope: {},
       link: function(scope){
           scope.x = 5;
       }
   };
});

当我们将作用域定义为isolated (作用域:{})时,它输出{{x}}为10,因此使用外部作用域。但是当我们为directive(scope:true),创建新的作用域时,它会将其用于内部内容和输出5。因此,它在2种情况下对内部内容使用不同的作用域。有人能给我一个提示/链接到源码/手册来解释这种不一致吗?

下面是用于处理代码的plnk

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-26 21:45:00

A从angular问题中得到了答案:https://github.com/angular/angular.js/issues/13845#issuecomment-174953398

这是源代码的答案:https://github.com/angular/angular.js/blob/eae0a1121ffcc636d760463105dcdc548ea47390/src/ng/compile.js#L2538-L2545

代码语言:javascript
复制
var scopeToChild = scope;
if (newIsolateScopeDirective && (newIsolateScopeDirective.template || newIsolateScopeDirective.templateUrl === null)) {
      scopeToChild = isolateScope;
}
childLinkFn && childLinkFn(scopeToChild, linkNode.childNodes, undefined, boundTranscludeFn);

resume:在隔离作用域类型的情况下,作用域仅为指令模板提供,而不为内部内容提供。

票数 3
EN

Stack Overflow用户

发布于 2016-01-23 19:23:02

在您的原始代码片段中,{{x}}不属于<mydir>。您应该为指令定义一个模板。

代码语言:javascript
复制
// 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

票数 5
EN

Stack Overflow用户

发布于 2016-01-23 18:35:16

有些不对劲的事情正在发生。如果你在Chrome中运行你的代码,打开Batarang,你可以看到当scope:{}时,它确实创建了一个新的作用域,与第一个完全断开连接,并将变量设置为5。但你的插值字符串绑定到外部作用域。如果您设置作用域: true,它还会创建一个从外部继承的新作用域,并且{{x}}插值正确绑定。我不认为是指令上的作用域参数不起作用,而是绑定的某些东西不起作用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34917448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档