angularJS scope @ 作用 "&cancel"作用
时间: 2023-07-13 22:23:58 浏览: 97
@符号用于在directive的scope中传递字符串类型的参数,而&符号用于在directive的scope中传递一个函数类型的参数。
当directive需要调用父作用域中的一个函数时,可以使用&符号传递该函数。使用&符号时,指令中使用的属性名必须与父作用域中函数名相同,并且在调用函数时,需要使用一个对象来传递参数。
例如,我们可以在HTML中这样使用directive来传递一个函数参数:
```
<my-directive my-cancel="cancel()"></my-directive>
```
在directive的定义中,我们可以使用&符号将my-cancel的值传递给directive的scope中的一个属性:
```
app.directive('myDirective', function() {
return {
scope: {
myCancel: '&'
},
link: function(scope, element, attrs) {
scope.cancel = function() {
console.log('cancel function called');
};
element.on('click', function() {
scope.myCancel();
});
}
};
});
```
在上面的例子中,我们将my-cancel的值传递给directive的scope中的myCancel属性,并且在link函数中通过scope.myCancel()来调用该函数。当点击指令的元素时,会调用父作用域中的cancel函数,并输出'cancel function called'。
需要注意的是,在调用函数时,需要使用一个对象来传递参数。例如,如果我们需要将一个字符串参数传递给cancel函数,可以在HTML中这样使用directive:
```
<my-directive my-cancel="cancel(someString)"></my-directive>
```
然后,在调用函数时,需要传递一个包含参数的对象:
```
scope.myCancel({someString: 'foo'});
```
这样,父作用域中的cancel函数就会接收到'someString'参数,并输出'cancel function called with parameter: foo'。
阅读全文