Wednesday, June 5, 2024
 Popular · Latest · Hot · Upcoming
70
rated 0 times [  71] [ 1]  / answers: 1 / hits: 35506  / 9 Years ago, wed, july 15, 2015, 12:00:00

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.


More From » angularjs

 Answers
14

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>

[#65792] Tuesday, July 14, 2015, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
campbelljonahb

Total Points: 247
Total Questions: 97
Total Answers: 110

Location: Jordan
Member since Wed, Jun 17, 2020
4 Years ago
;