J'ai une directive de formulaire qui utilise un callbackattribut spécifié avec une portée d'isolat:
scope: { callback: '&' }
Il se trouve à l'intérieur d'un ng-repeatafin que l'expression que je passe inclut le idde l'objet comme argument de la fonction de rappel:
<directive ng-repeat = "item in stuff" callback = "callback(item.id)"/>
Quand j'ai fini avec la directive, elle appelle $scope.callback()depuis sa fonction de contrôleur. Dans la plupart des cas, c'est bien, et c'est tout ce que je veux faire, mais parfois j'aimerais ajouter un autre argument de l'intérieur de directivelui - même.
Existe-t-il une expression angulaire qui permettrait ceci $scope.callback(arg2):, résultant en callbackun appel avec arguments = [item.id, arg2]?
Sinon, quelle est la meilleure façon de procéder?
J'ai trouvé que cela fonctionne:
<directive
ng-repeat = "item in stuff"
callback = "callback"
callback-arg="item.id"/>
Avec
scope { callback: '=', callbackArg: '=' }
et la directive appelant
$scope.callback.apply(null, [$scope.callbackArg].concat([arg2, arg3]) );
Mais je ne pense pas que ce soit particulièrement soigné et que cela implique de mettre des éléments supplémentaires dans la portée d'isolat.
Y a-t-il un meilleur moyen?
Plunker aire de jeux ici (avoir la console ouverte).
ngAPI, par exemple ng-click="someFunction()"une expression qui évalue l'exécution d'une fonction.
$scope.callbackest défini par l' callback="someFunction"attribut et la scope: { callback: '=' }propriété de l'objet de définition de directive. $scope.callback est une fonction à appeler ultérieurement. La valeur réelle de l'attribut est évidemment une chaîne - c'est toujours le cas avec HTML.