如果我在指令定义中声明以下隔离范围:
scope: {
state: '=',
},
是否准确地说=
将隔离范围上的state
属性链接到与指令声明中名为state
的属性关联的表达式返回的值,运行在父范围内?
答案 0 :(得分:1)
例如说你的指令如下,
<div ng-controller="testCtrl">
<directive-name state="scope_variable"></directive-name>
</div>
然后如果我们这样使用
scope: {
state: '=',
},
指令的 state
属性应该是$scope (testCtrl's)
变量,如果它是范围变量,那么state
指向testCtrl
中的同一个变量范围。
或类似于...state="'scope_variable'"...
的表达式然后它是一个字符串并且它没有指向范围变量,并且如果你将其定义为...state="1+2"...
那么它的表达式因此指令范围内的state
变量等于3
。
这是一个demo。
注意强>
如果我们将指令定义为隔离范围scope: {}
,则angular将从其直接父级(前一个示例的父范围为scope of testCtrl
)创建子范围。
查看所提供演示的控制台,并看到console.log(scope.$parent.name);
指向$scope.name
范围的MainCtrl
。