У меня есть эта простая угловая директива:Уведомлять директиву о данных, получающих
angular.module("directives").directive("loading", function($rootScope) {
return {
link: function(scope, element, attrs) {
console.log("loading directive", scope, element, attrs);
element.addClass("hidden");
$rootScope.$on("$routeChangeStart", function(event, next, current) {
element.removeClass("hidden");
});
// how do I notify data have been received in the controller? <---
}
};
});
Как вы можете видеть, что это позволяет мне показать сообщение загрузки, которое будет отображаться, когда маршрут изменяется приложение. Как это:
Loading ...Моя проблема заключается в том, что я не знаю, как сообщить эту директиву для того, чтобы заставить ее исчезнуть.
Скажем, маршрут /list/
связан с ListController
. Когда попадет URL-адрес /list/
, контроллер загрузит некоторые данные, и только когда такие данные будут получены, я хочу, чтобы сообщение загрузки исчезло. Ясно, что директива понятия не имеет, когда данные контроллера доставляются, поэтому мой вопрос остается:
Как, черт возьми, я придумал достойный дизайн для этого?
Попробуйте $ broadcast событие и поймайте его в директиве – Kasyx