这听起来有点愚蠢。但是我在理解是否仅在创建新范围时插入'ng-scope'类时遇到了问题,还是其他问题?
示例:我将这些代码行链接到控制器:
<button class="btn" ng-click="open()">Open me!</button>
<div ng-show="selected">Selection from a modal: {{ selected }}</div>
在Web控制台中,两者都有一个ng-scope:
<button class="btn ng-scope" ng-click="open()">Open me!</button>
<div ng-show="selected" class="ng-scope ng-binding ng-hide">Selection from a modal: </div>
即使没有特定于角度的数据,就像这里一样,它会添加一个ng-scope:
<div>hello</div>
输出
<div class="ng-scope">hello</div>
但为什么??
答案 0 :(得分:13)
任何有附加范围的地方。来自the documentation:
请注意,Angular会自动将ng-scope类放在元素上 附加范围的地方。此示例中的定义 新的范围位置以红色突出显示。儿童范围是 必要的,因为转发器评估{{name}}表达式,但是 取决于它生成的表达式的评估范围 不同的结果。
在this answer中,@ MarkRajcok表示angular使用这些来跟踪范围(以及垃圾收集)。
编辑:
并回答您编辑过的问题。不,这不会添加ng-scope
类:
<div>hello</div>
Here is a plunker看到这一点。
注意ng-scope
类如何仅应用于声明ng-controller
的节点。
<div ng-controller="Ctrl" class="ng-scope">
<div>hello2</div>
</div>
答案 1 :(得分:-1)
每当我们在创建角度模块时指定依赖注入
(angular.module( '对myApp',的 [] 强>))
,然后只会添加class =“ng-class”
<body ng-app="myApp "ng-controller="myCtrl" class="ng-class">
。如果我们不指定DI(angular.module('myApp');)则不会添加class =“ng-class”。这是<body>
元素的情况。但除<body>
元素外,每当我们为任何html元素/标签编写ng-controller指令时,都会添加class =“ng-scope”。例如。 <div ng-controller="myDiv"></div>
。输出为<div class="ng-scope"></div>