AngularJS directive de la liaison d'une fonction à plusieurs arguments
J'ai un peu de mal à la liaison d'une fonction définie dans un contrôleur avec une fonction de rappel dans une directive. Mon code ressemble à ce qui suit:
Dans mon controller:
$scope.handleDrop = function ( elementId, file ) {
console.log( 'handleDrop called' );
}
Puis mon directive:
.directive( 'myDirective', function () {
return {
scope: {
onDrop: '&'
},
link: function(scope, elem, attrs) {
var myFile, elemId = [...]
scope.onDrop(elemId, myFile);
}
} );
Et dans ma page html:
<my-directive on-drop="handleDrop"></my-directive>
Avoir pas de chance avec le code ci-dessus. De ce que j'ai lu dans les différents tutoriels que je comprends que je suis censé pour spécifier les arguments dans la page HTML?
Vous devez vous connecter pour publier un commentaire.
Il y a une petite erreur dans votre code, s'il vous plaît essayer le code ci-dessous et cela devrait fonctionner pour vous
Méthode Alternative permettant de survivre minification
laisser votre html comme il était:
changement de l'appel à:
l'avis supplémentaire d'ouverture et de fermeture de la parenthèse donné à onDrop. Cela permettra d'instancier la fonction au lieu d'injecter le code de fonction.
Pourquoi est-il mieux
changer les paramètres " noms dans le handleDrop() définition (ou même ajouter un peu plus, si vous le manipulez correctement) ne sera pas vous faire changer d'chacune des directives, des injections dans le code html. beaucoup plus sèche.
comme @TrueWill suggéré, je suis presque sûr que les autres solutions ne survivra pas minification, alors que ce code en reste avec un maximum de flexibilité et est nom agnostique.
une autre raison personnelle, est l'objet de la syntaxe, ce qui me fait écrire beaucoup plus de code:
(et l'ajout de la signature de la fonction dans chaque directive appel)
que s'opposer à
(zéro maintenance de votre code html)
j'ai trouvé cette excellente solution ici.
espère que ça aide!