Mam dyrektywę, która ma własnego kontrolera. Zobacz poniższy kod:
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'
}
});
Ma to być system powiadamiania o błędach / powiadomieniach / ostrzeżeniach. To, co chcę zrobić, to wywołać funkcję show
na tym kontrolerze z innego kontrolera (nie dyrektywy) . A kiedy to zrobię, chciałbym również, aby moja funkcja łączenia wykryła, że niektóre właściwości uległy zmianie i wykonała pewne animacje.
Oto kod ilustrujący to, o co proszę:
var app = angular.module('app', ['RestService']);
app.controller('IndexController', function($scope, RestService) {
var result = RestService.query();
if(result.error) {
popdown.notify(error.message, 'error');
}
});
Więc kiedy dzwoni show
na popdown
dyrektywy kontrolera, funkcja link powinien również być wyzwalane i wykonać animację. Jak mogłem to osiągnąć?
popdown.show(...)
zamiast tego chciałeś napisać, popdown.notify(...)
czy to prawda? W przeciwnym razie funkcja powiadamiania jest nieco myląca.
popdown.notify
? .notifiy
metoda, mam na myśli
popdown
dyrektywy na stronie - czy jest to tylko w jednym miejscu, do którego mają mieć dostęp wszyscy kontrolerzy, czy też jest kilka wyskakujących okienek w różnych miejscach?