指令定义语法澄清

时间:2015-10-01 09:19:00

标签: javascript angularjs

如果我在指令定义中声明以下隔离范围:

scope: {
    state: '=', 
},

是否准确地说=将隔离范围上的state属性链接到与指令声明中名为state的属性关联的表达式返回的值,运行在父范围内?

1 个答案:

答案 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