将回调函数传递给指令

Mik*_*ike 16 javascript google-image-search angularjs angularjs-directive angularjs-ng-click

我正在尝试将回调函数从控制器传递给指令.

这是回调函数代码:

$scope.onImageSelect = function(image) {
    alert('SET');
    $scope.card.image = image;
};
Run Code Online (Sandbox Code Playgroud)

指令用法:

<google-image-search callback="onImageSelect" />
Run Code Online (Sandbox Code Playgroud)

指令代码:

ngmod.directive('directive', function() {
    return {
        templateUrl: '/templates/template.html',
        scope: {
            callback: '&'
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

模板中的回调用法:

<a data-ng-click="callback(url)"></a>
Run Code Online (Sandbox Code Playgroud)

但是,这给了我以下错误:

TypeError: Cannot use 'in' operator to search for 'onImageSelect'
Run Code Online (Sandbox Code Playgroud)

我见过很多类似的问题,但无法理解我错在哪里.

Pan*_*kar 28

从指令调用表达式方法时你需要从JSON格式的指令传递参数,你也应该纠正你的指令callback属性值来传递函数 callback="onImageSelect(image)"

指令用法:

<google-image-search callback="onImageSelect(image)" />
Run Code Online (Sandbox Code Playgroud)

指令模板

<a data-ng-click="callback({image: url})"></a>
Run Code Online (Sandbox Code Playgroud)