Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pass callback function to directive

I'm trying to pass a callback function from a controller to a directive.

Here's the callback function code:

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

Directive usage:

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

Directive code:

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

Callback usage in template:

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

However, this gives me the following error:

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

I've seen a lot of similar questions, but could not understand where am I wrong.

like image 222
Mike Avatar asked Jul 15 '15 20:07

Mike


1 Answers

While calling the expression method from the directive you need to pass the parameter from the directive in JSON format, also you should correct your directive callback attribute value to pass function like callback="onImageSelect(image)"

Directive usage:

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

Directive Template

<a data-ng-click="callback({image: url})"></a>
like image 193
Pankaj Parkar Avatar answered Oct 07 '22 16:10

Pankaj Parkar