我是Javascript和AnuglarJS的新手,但我有一些Java经验。我正在研究AngularJS developer's guide on directive,并有一个问题。
在"创建包含其他元素的指令"有一个example/demo。在示例/演示中:
指令myDialog的模板如下:
<div class="alert">
<a href class="close" ng-click="close({message: 'closing for now'})">×</a>
<div ng-transclude></div>
</div>
我在这里无法理解close({message: 'closing for now'})
。根据指令的定义:
scope: {
'close': '&onClose'
}
所以close
是对指令父母onClose
的引用。 onClose
未在控制器中定义,但作为属性显示在其模板中,并进一步引用hideDialog(message)
:
<div ng-controller="Controller">
{{message}}
<my-dialog ng-hide="dialogIsHidden" on-close="hideDialog(message)">
Check out the contents, {{name}}!
</my-dialog>
</div>
问题:
onClose
未在控制器中明确定义,如何处理和处理从指令传递的任何输入参数?hideDialog
采用字符串参数,但指令中的close
将对象{message: 'closing for now'}
传递给onClose
。 onClose
如何从输入的message
键中提取值并将其传递给目标函数hideDialog
?答案 0 :(得分:1)
Angular Directives有多种定义值的方法,然后可以绑定到指令的控制器。 '&amp;'是如何将函数从父控制器传递给指令控制器。在上面定义的实例中,父控制器(Controller)在其“范围”(实际上并不酷)上有一个方法(hideDialog),它接受一个参数(消息)。 '&amp; onClose'绑定到指令控制器的'close'变量。当调用'close'时,它需要传递'message',就像它是一个命名参数一样(这里是es6 sorta)。这是因为指令控制器的变量扩展了父控制器的方法,以及如何将变量传递给该方法。