J'ai une directive de formulaire qui utilise un callback
attribut spécifié avec une portée d'isolat:
scope: { callback: '&' }
Il se trouve à l'intérieur d'un ng-repeat
afin que l'expression que je passe inclut le id
de 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 directive
lui - même.
Existe-t-il une expression angulaire qui permettrait ceci $scope.callback(arg2)
:, résultant en callback
un 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).
ng
API, par exemple ng-click="someFunction()"
une expression qui évalue l'exécution d'une fonction.
$scope.callback
est 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.