Мне нужна помощь относительно моего первого проекта AngularJS (после официального учебника). Это началось хорошо, так как я смог контролировать свою форму, отправить мой запрос ajax и отобразить результаты, как я хочу, с разбивкой на страницы ... Разве это не здорово? Но теперь я пытаюсь сделать загрузчик ajax. Я думаю, что было бы возможно использовать директиву ng-show, но я хотел бы сделать это как можно более общим, чтобы я мог повторно использовать его в других проектах.Создать общую директиву загрузчика ajax
Итак, я начал создавать директиву (после этого: Angularjs loading screen on ajax request). Теперь все работает так, как я хочу, за исключением того, что загрузчик ajax никогда не отображается.
Похоже, что моя директива не проверяет параметр загрузки. У меня такое чувство, что я что-то пропустил.
Вот мой код (упрощенно):
(function() {
var app = angular.module('querygen', []);
app.controller('QuerygenController',['$http', function($http){
this.loading=false;
this.getQueries = function(page){
this.loading = true;
querygen = this;
$http.post('/action.php', data).success(function(data){
querygen.loading = false;
}).error(function(data){
querygen.loading=false;
alert('An error occured.');
});
};
}]);
app.directive('loading', function() {
return {
restrict: 'E',
replace:true,
template: '<div class="loading"><img src="images/loader.gif" alt="Loading..." /></div>',
link: function (scope, element, attr) {
scope.$watch('loading', function (val) {
if (val)
element.show();
else
element.hide();
});
}
};
});
})();
Мой HTML:
<div ng-controller="QuerygenController as querygenCtrl">
<loading></loading>
<div ng-show="!querygenCtrl.loading">
<div ng-repeat="query in querygenCtrl.queries">
{{query}}
</div>
</div>
</div>
Кроме того, как только моя проблема решена, если я поставлю директиву в другой модуль, и добавить новый модуль, как зависимость «querygen», будет ли она работать так, как есть?
Я не уверен, что вы используете «это» в своем контроллере. У меня создалось впечатление, что scope. $ Watch следует использовать только для других переменных сферы, но я не могу найти документы для поддержки этого прямо сейчас. Вы пытались сделать «загрузку» переменной области? – cjkenn