javascript - 将回调函数传递给指令

标签 javascript angularjs angularjs-directive angularjs-ng-click google-image-search

我正在尝试将回调函数从 Controller 传递到指令。

回调函数代码如下:

$scope.onImageSelect = function(image) {
    alert('SET');
    $scope.card.image = image;
};

指令用法:

<google-image-search callback="onImageSelect" />

指令代码:

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

模板中的回调用法:

<a data-ng-click="callback(url)"></a>

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

TypeError: Cannot use 'in' operator to search for 'onImageSelect'

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

最佳答案

当从指令中调用表达式方法时,您需要以 JSON 格式从指令中传递参数,您还应该更正指令中的 callback 属性值以传递函数像 callback="onImageSelect(image)"

指令用法:

<google-image-search callback="onImageSelect(image)" />

指令模板

<a data-ng-click="callback({image: url})"></a>

关于javascript - 将回调函数传递给指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31440366/

相关文章:

javascript - 具有此名称的 Controller 未注册——错误 : $controller:ctrlreg

php - 当调用 javascript 函数时将 javascript 变量值传递给 php 文件

html - AngularJS 中的 md-content 滚动问题

google-maps - 如何在 angular-google-maps 指令中组合 RichMarker

javascript - 带有 ng-repeat 的 Angular 1.5 过滤器无法按 ID 轨道工作

javascript - 使用向上/向下箭头通过 AngularJS 聚焦和选择列表值

javascript - AngularJS - 单击时将值传递给服务

javascript - jQuery.slideDown 立即完成

javascript - JS 通过绑定(bind)传递参数到对象内部函数以访问对象范围内的特定变量的最佳实践

javascript - 使用 onclick 将内容替换为另一个内容