Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角度:使用&;绑定回调函数;并传递论点_Angularjs_Data Binding_Directive - Fatal编程技术网

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>'