166 votes

AngularJS - passer une fonction à une directive

J'ai un exemple angularJS

<div ng-controller="testCtrl">

<test color1="color1" updateFn="updateFn()"></test>
</div>
 <script>
  angular.module('dr', [])
.controller("testCtrl", function($scope) {
    $scope.color1 = "color";
    $scope.updateFn = function() {
        alert('123');
    }
})
.directive('test', function() {
    return {
        restrict: 'E',
        scope: {color1: '=',
                updateFn: '&'},
        template: "<button ng-click='updateFn()'>Click</button>",
        replace: true,
        link: function(scope, elm, attrs) { 
        }
    }
});

</script>
</body>

</html>

Je veux que lorsque je clique sur le bouton, la boîte d'alerte apparaisse, mais rien ne s'affiche.

Quelqu'un peut-il m'aider ?

4voto

J'ai dû utiliser la liaison "=" au lieu de "&" car cela ne fonctionnait pas. Comportement étrange.

0voto

user2893858 Points 41

@JorgeGRC Merci pour votre réponse. Une chose cependant, la partie "peut-être" est très importante. Si vous avez un ou plusieurs paramètres, vous devez les inclure dans votre modèle et vous assurer de spécifier votre nom de domaine. locaux par exemple updateFn({msg: "Directive Args"} .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X