Angularjs 角度:使用&;绑定回调函数;并传递论点
我有一个(简化的)指令Angularjs 角度:使用&;绑定回调函数;并传递论点,angularjs,data-binding,directive,Angularjs,Data Binding,Directive,我有一个(简化的)指令 angular.module('myApp') .directive('myButton', function () { return { restrict: 'E', scope: { callbackFn: '&' }, template: '<button ng-click=ca;;backFn($eve
angular.module('myApp')
.directive('myButton', function () {
return {
restrict: 'E',
scope: {
callbackFn: '&'
},
template: '<button ng-click=ca;;backFn($evenb)'
}
});
以及HTML:
<my-button callback-fn="page.myCallback()"></my-button>
我认为你应该这样做: 在HTML页面中:
<my-button callback-fn="page.myCallback(event)"></my-button>
在你的指示中:
angular.module('myApp')
.directive('myButton', function () {
return {
restrict: 'E',
controller: 'Controller',
bindToController: true,
scope: {
callbackFn: '&'
},
template: '<button ng-click=foo($event)'
}
});
function Controller() {
this.foo = function (event) {
this.callbackFn({event: event});
}
}
angular.module('myApp')
.指令('myButton',函数(){
返回{
限制:'E',
控制器:“控制器”,
bindToController:对,
范围:{
callbackFn:“&”
},
模板:“您尚未完全正确设置绑定。您可以通过键值映射将参数从指令传回父控制器。根据(我的强调):
&
或&attr
-提供在父作用域上下文中执行表达式的方法。如果未指定attr名称,则假定属性名称与本地名称相同。给定
和作用域的小部件定义:{localFn:'&myAttr'
},然后隔离作用域属性localFn
将指向count=count+value
表达式的函数包装器。通常希望通过表达式将数据从隔离作用域传递到父作用域,这可以通过将局部变量名和值的映射传递到表达式包装器fn来完成。对于例如,如果表达式是increment(amount)
,那么我们可以通过调用localFn
作为localFn({amount:22})
来指定amount值
因此,这意味着您需要在消费HTML中添加参数:
<my-button callback-fn="page.myCallback(parentEvent)"></my-button>
然后在指令中:
......
restrict: 'E',
scope: {
callbackFn: '&'
},
template: '<button ng-click="ctrl.callbackFn({parentEvent: $event})">Callback</button>'
。。。。。。
限制:'E',
范围:{
callbackFn:“&”
},
模板:“回调”
,谢谢!为此奋斗了很久。很好的解释
<my-button callback-fn="page.myCallback(parentEvent)"></my-button>
......
restrict: 'E',
scope: {
callbackFn: '&'
},
template: '<button ng-click="ctrl.callbackFn({parentEvent: $event})">Callback</button>'