Passer la fonction de rappel à la directive
Je suis en train de passer d'une fonction de rappel à partir d'un contrôleur à une directive.
Voici la fonction de rappel code:
$scope.onImageSelect = function(image) {
alert('SET');
$scope.card.image = image;
};
Directive d'utilisation:
<google-image-search callback="onImageSelect" />
Directive code:
ngmod.directive('directive', function() {
return {
templateUrl: '/templates/template.html',
scope: {
callback: '&'
}
}
});
Rappel de l'utilisation de modèle:
<a data-ng-click="callback(url)"></a>
Cependant, cela me donne l'erreur suivante:
TypeError: Cannot use 'in' operator to search for 'onImageSelect'
J'ai vu beaucoup de questions similaires, mais ne pouvait pas comprendre où je me trompe.
source d'informationauteur Mike
Vous devez vous connecter pour publier un commentaire.
Tout en appelant la méthode d'expression de la directive, vous devez passer le paramètre de la directive, dans
JSON
format, aussi vous devriez corriger votre directivecallback
valeur de l'attribut pour passer de la fonction commecallback="onImageSelect(image)"
Directive d'utilisation:
Directive Modèle
Suffit d'utiliser:
Cet exemple de Guide du développeur AngularJS est assez similaire à votre cas: http://plnkr.co/edit/hYBxk070sgw54RElyWNq?p=preview
De nombreux AngularJs les développeurs ont déjà savoir sur AngularJs Directives et probablement savoir sur la directive de la portée et de méthodes.
Comme vous le savez, il y a 3 AngularJs Directive champ d'application des méthodes: '@', '=', '&", mais maintenant, nous allons parler seulement de "& " la méthode.Nous allons voir comment nous pouvons mettre en œuvre la méthode "& " dans nos applications.
Lorsque nous définissons une fonction quelconque à l'intérieur du champ d'application actuel et souhaitez le mettre en œuvre des directives,n'oubliez pas une chose: vous avez à payer l'attention sur vos arguments et leur ordre.Si vous voulez plus, voici un excellent article sur le sujet:
http://www.w3docs.com/snippets/angularjs/angularjs-directive-scope-method.html
essayer de changer le champ d'application de l'objet comme cela
et il fonctionnera