指令定义语法澄清

Directive definition syntax clarification

本文关键字:语法 定义 指令      更新时间:2023-09-26

如果我在指令定义中声明以下隔离作用域:

scope: {
    state: '=', 
},

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

例如你的指令如下,

<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

希望这有意义。

这里是一个演示。

注意

如果我们将指令定义为隔离作用域scope: {},那么angular将从它的直接父作用域(上一个例子的父作用域是scope of testCtrl)创建一个子作用域

查看所提供的演示控制台,并看到console.log(scope.$parent.name);指向MainCtrl作用域中的$scope.name