AngularJS: Comment passer des arguments/fonctions d'une directive?
Regarder ce Violon, que dois-je changer, que les expressions dans le modèle sont évaluées en utilisant les arguments que j'ai défini dans le code HTML? Le bouton ENREGISTRER doit appeler le blabla()
-la fonction du contrôleur, depuis que j'ai passer?
var myApp = angular.module('MyApp',[])
myApp.directive('editkeyvalue', function() {
return {
restrict: 'E',
replace: true,
scope: {
accept: "expression"
},
template : '<div><label class="control-label">{{key}}</label>' +
'<label class="control-label">{{key}}</label>' +
'<input type="text" ng-model="value" />'+
'<button type="button" x-ng-click="cancel()">CANCEL</button>' +
'<button type="submit" x-ng-click="save()">SAVE</button></div>',
controller: function($scope, $element, $attrs, $location) {
$scope.save= function() {
$scope.accept();
};
}
}
});
Je ne vois pas trop par qui. Merci pour l'aide!
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir les deux sens de la liaison de données avec
property: '='
Roy suggère. Donc, si vous voulez à la foiskey
etvalue
lié à l'étendue locale vous neDepuis que vous êtes de passage à ces valeurs, vous y avez accès dans votre directive du contrôleur. Mais dans le cas où vous souhaitez exécuter une fonction dans le contexte de la portée parent, qui semble être ce que vous voulez faire avec le
accept
attribut, alors vous devez dire angulaire comme ceMaintenant, à partir de votre
save
méthode que vous pourriez appeler la fonction transmise viaaccept
Voici un jsfiddle
Utiliser des minuscules pour les noms de fonction, sinon ça ne marche pas.
Juste une petite remarque que vous n'avez pas besoin de l'emballage de la fonction enregistrer. Appelez simplement cela dans le modèle:
'<button type="submit" x-ng-click="accept()">SAVE</button></div>',
Qui transpose l'appel de la fonction et passe les paramètres comme prévu.
Cela simplifie le code et le rend beaucoup plus facile à lire.