J'ai une directive qui a son propre contrôleur. Voir le code ci-dessous:
var popdown = angular.module('xModules',[]);
popdown.directive('popdown', function () {
var PopdownController = function ($scope) {
this.scope = $scope;
}
PopdownController.prototype = {
show:function (message, type) {
this.scope.message = message;
this.scope.type = type;
},
hide:function () {
this.scope.message = '';
this.scope.type = '';
}
}
var linkFn = function (scope, lElement, attrs, controller) {
};
return {
controller: PopdownController,
link: linkFn,
replace: true,
templateUrl: './partials/modules/popdown.html'
}
});
Il s'agit d'un système de notification des erreurs / notifications / avertissements. Ce que je veux faire, c'est à partir d'un autre contrôleur (pas de directive) pour appeler la fonction showsur ce contrôleur. Et quand je fais cela, je voudrais également que ma fonction de lien détecte que certaines propriétés ont changé et exécute certaines animations.
Voici un code pour illustrer ce que je demande:
var app = angular.module('app', ['RestService']);
app.controller('IndexController', function($scope, RestService) {
var result = RestService.query();
if(result.error) {
popdown.notify(error.message, 'error');
}
});
Ainsi, lors de l'appel showau popdowncontrôleur de directive, la fonction de liaison doit également être déclenchée et effectuer une animation. Comment pourrais-je y parvenir?
popdown.show(...)au lieu de popdown.notify(...)ça, n'est-ce pas? Sinon, la fonction de notification est un peu déroutante.
popdown.notify? .notifiyméthode, je veux dire
popdowndirective sur la page - est-ce juste à un endroit où les autres contrôleurs sont censés tous y avoir accès, ou y a-t-il plusieurs fenêtres contextuelles à différents endroits?