angularJS scope "&onConfirm"作用
时间: 2023-07-13 22:23:58 浏览: 79
&符号用于在directive的scope中传递一个函数类型的参数,与上面的例子类似,但是它有一个特殊的用途,即在directive中触发一个事件。
当directive需要在某个特定的时刻触发一个事件时,可以使用&符号传递一个函数。使用&符号时,指令中使用的属性名必须与父作用域中函数名相同,并且在触发事件时,需要使用一个对象来传递事件数据。
例如,我们可以在HTML中这样使用directive来传递一个事件参数:
```
<my-directive my-on-confirm="onConfirm(eventData)"></my-directive>
```
在directive的定义中,我们可以使用&符号将my-on-confirm的值传递给directive的scope中的一个属性:
```
app.directive('myDirective', function() {
return {
scope: {
myOnConfirm: '&'
},
link: function(scope, element, attrs) {
element.on('click', function() {
var eventData = {message: 'confirm button clicked'};
scope.myOnConfirm({eventData: eventData});
});
}
};
});
```
在上面的例子中,我们将my-on-confirm的值传递给directive的scope中的myOnConfirm属性,并且在link函数中通过scope.myOnConfirm()来触发该事件。当点击指令的元素时,会触发父作用域中的onConfirm事件,并传递一个包含事件数据的对象。
需要注意的是,在触发事件时,需要使用一个对象来传递事件数据。例如,如果我们需要在事件中传递一个字符串参数,可以在HTML中这样使用directive:
```
<my-directive my-on-confirm="onConfirm('foo')"></my-directive>
```
然后,在触发事件时,需要传递一个包含参数的对象:
```
scope.myOnConfirm({eventData: 'foo'});
```
这样,父作用域中的onConfirm事件就会接收到'foo'参数,并输出'confirm button clicked with message: foo'。
阅读全文