Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.12.2016, 20:41
Аспирант
Отправить личное сообщение для pro_xaoc Посмотреть профиль Найти все сообщения от pro_xaoc
 
Регистрация: 23.03.2011
Сообщений: 69

Прикрутить к ui-route stateProvider.state аналоги jqueryAjax.success
Доброго времени суток.
Знатоки, пожалуйста, направьте в правильном направлении. Необходимо к stateProvider.state как-то прикрутить $http.get().success, $http.get().before, $http.get().after или$http.get().error . Как организовать?
Мой вариант:
app.config(function($stateProvider,$urlRouterProvider){
	$stateProvider
	.state('accounts_groups',{
		url: '/accounts/groups',
		
		controller: function($scope,$http){
			menuSelectAfterReload('account','groups');
			alert(2);
			$http.get('/accounts/groups/show')
				.success(function(data){
					alert(1);
				});
		}
	});

на моем коде $http.get срабатывает только при обновлении, дальше при переходе с другого урл на '/accounts/groups' - нет. Что посоветуете? Заранее спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 14.12.2016, 21:14
Новичок на форуме
Отправить личное сообщение для Alexey12345 Посмотреть профиль Найти все сообщения от Alexey12345
 
Регистрация: 14.12.2016
Сообщений: 3

Почему бы не использовать resolve для этих целей?
https://github.com/angular-ui/ui-router/wiki#resolve
Ответить с цитированием
  #3 (permalink)  
Старый 14.12.2016, 21:15
Аспирант
Отправить личное сообщение для pro_xaoc Посмотреть профиль Найти все сообщения от pro_xaoc
 
Регистрация: 23.03.2011
Сообщений: 69

В общем, хотел прикрутить ngProgress API
Ответить с цитированием
  #4 (permalink)  
Старый 14.12.2016, 21:50
Аспирант
Отправить личное сообщение для pro_xaoc Посмотреть профиль Найти все сообщения от pro_xaoc
 
Регистрация: 23.03.2011
Сообщений: 69

Не получается что-то. Запускается один раз при обновлении и все на этом. Дальше при переходе по ссылке не работает. Мой код:
app.config(function($stateProvider,$urlRouterProvider){
	$stateProvider
.state('accounts_groups',{
		url: '/accounts/groups',
		resolve: {
			promiseObj: function($http){
				return $http({method: 'GET',url: '/accounts/groups/show'})
				.then(function successCallback(response){
					alert('success');
				}, function errorCallback(response){
					alert('error');
				});
			}
		},
		controller: function($scope,promiseObj){
			menuSelectAfterReload('account','groups');
			promiseObj;
		}
	});
Ответить с цитированием
  #5 (permalink)  
Старый 14.12.2016, 22:11
Новичок на форуме
Отправить личное сообщение для Alexey12345 Посмотреть профиль Найти все сообщения от Alexey12345
 
Регистрация: 14.12.2016
Сообщений: 3

Создай пример в онлайн редакторе, дело видимо не в настройках ui-router. А вообще если ngProgress API нужен только для перехода по страницам можно один раз в конфиге повесить обработчики событий на ui-router
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams, options){
    ngProgress.start();
})

$rootScope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){
    ngProgress.complete();
})
Ответить с цитированием
  #6 (permalink)  
Старый 15.12.2016, 23:05
Аспирант
Отправить личное сообщение для pro_xaoc Посмотреть профиль Найти все сообщения от pro_xaoc
 
Регистрация: 23.03.2011
Сообщений: 69

Код отрабатывает только один раз. Т.е., перезагрузились на другой странице, потом переходим по ссылке #/somelink, срабатывает ngProgress. Теперь переходим на другую ссылку и обратно на #/somelink - уже не срабатывает, т.е. не отправляется ajax-запрос. В чем может быть проблема одноразовой работы? Такое чувство, как будто где-то в кэше сидит и при повторном переходе на ту же ссылке, отдает из кэша. Но это конечно мое предположение ... какие мысли могут быть?
Ответить с цитированием
  #7 (permalink)  
Старый 16.12.2016, 10:15
Аспирант
Отправить личное сообщение для pro_xaoc Посмотреть профиль Найти все сообщения от pro_xaoc
 
Регистрация: 23.03.2011
Сообщений: 69

Проблема решена! Оказалось, что я переходил по ссылкам, УРЛ менялись, а запрос отправлялся только на одной тестовой ссылке. Поэтому ngProgress срабатывал один раз.
Ответить с цитированием
  #8 (permalink)  
Старый 16.12.2016, 19:13
Аспирант
Отправить личное сообщение для pro_xaoc Посмотреть профиль Найти все сообщения от pro_xaoc
 
Регистрация: 23.03.2011
Сообщений: 69

Проблема до сих пор актуальна, шаблон загружается только один раз, помогите пожалуйста. Код:
var app = angular.module('app', ['ui.router']);

app.config(function($stateProvider,$urlRouterProvider){
	$stateProvider
	.state('accounts_users',{
		url: '/accounts/users',
		templateUrl: '/index/test',
		controller: function($scope){
			menuSelectAfterReload('account','users');
		}
	})
	.state('accounts_groups',{
		url: '/accounts/groups',
		templateUrl: '/accounts/groups/show',
		controller: function($scope){
			menuSelectAfterReload('account','groups');
		}
	});
	$urlRouterProvider.otherwise('/dashboard/orders');
});

app.run(function($rootScope) {
    $rootScope.$on('$stateChangeStart', function() {
        NProgress.start();
    });

    // When route successfully changed.
    $rootScope.$on('$stateChangeSuccess', function() {
        NProgress.done();
    });

});
Ответить с цитированием
  #9 (permalink)  
Старый 23.12.2016, 09:00
Аспирант
Отправить личное сообщение для pro_xaoc Посмотреть профиль Найти все сообщения от pro_xaoc
 
Регистрация: 23.03.2011
Сообщений: 69

В общем плюнул на этот костыльный ангуляр и сам написал свой роутер. Кошмар какой-то
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск