Bon moyen de passer des fonctions de la directive pour l'exécution en lien

Je sais que nous avons l'habitude de passer des fonctions de directives par le biais d'un isolé portée:

.directive('myComponent', function () {
    return {
        scope:{
            foo: '&'
        }        
    };
})

Et ensuite dans le modèle, nous pouvons appeler cette fonction comme tel:

<button class="btn" ng-click="foo({ myVal: value })">Submit</button>

myVal est le nom du paramètre de la fonction foo dans la portée parent prend.

Maintenant, si j'ai l'intention de l'utiliser depuis le link fonction au lieu de modèle, je vais devoir l'appeler avec: scope.foo()(value), depuis scope.foo sert comme un wrapper de la fonction d'origine. Cela semble un peu fastidieux pour moi.

Si je passe la fonction de la myComponent directive à l'aide de =:

.directive('myComponent', function () {
    return {
        scope:{
            foo: '='
        }        
    };
})

Alors je vais être en mesure de l'utiliser juste scope.foo(value) de ma fonction de lien. Alors, est-ce valable de cas d'utilisation pour utiliser 2 voies de liaison sur les fonctions, ou suis-je en train de faire une sorte de hack que je ne devrais pas être en train de faire?

Je ne vois rien de mal à cela, en soi, mais peut-être envisager de déléguer à un service.
J'hésite car 2 voies de liaison semble être conçu pour le modèle de données, mais je l'utilise sur une fonction. En général, ces fonctions ne sont pas censés être changé de toute façon.

OriginalL'auteur Xavier_Ex | 2015-04-24