Eu tenho uma diretiva que tem seu próprio controlador. Veja o código abaixo:
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'
}
});
Este é um sistema de notificação de erros / notificações / avisos. O que eu quero fazer é de outro controlador (não um diretivo) para chamar a funçãoshow
neste controlador. E, quando faço isso, também quero que minha função de link detecte que algumas propriedades foram alteradas e execute algumas animações.
Aqui está um código para exemplificar o que estou pedindo:
var app = angular.module('app', ['RestService']);
app.controller('IndexController', function($scope, RestService) {
var result = RestService.query();
if(result.error) {
popdown.notify(error.message, 'error');
}
});
Portanto, ao chamar show
no popdown
controlador de diretiva, a função de link também deve ser disparada e executar uma animação. Como eu poderia conseguir isso?
popdown.show(...)
não popdown.notify(...)
é? Caso contrário, a função de notificação é um pouco confusa.
popdown.notify
? .notifiy
método, quero dizer
popdown
diretiva na página - é apenas em um lugar onde todos os outros controladores devem ter acesso a ela, ou há vários popdowns em locais diferentes?