Прикрутить к 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' - нет. Что посоветуете? Заранее спасибо:) |
Почему бы не использовать resolve для этих целей?
https://github.com/angular-ui/ui-router/wiki#resolve |
В общем, хотел прикрутить ngProgress API
|
Не получается что-то. Запускается один раз при обновлении и все на этом. Дальше при переходе по ссылке не работает. Мой код:
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; } }); |
Создай пример в онлайн редакторе, дело видимо не в настройках 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(); }) |
Код отрабатывает только один раз. Т.е., перезагрузились на другой странице, потом переходим по ссылке #/somelink, срабатывает ngProgress. Теперь переходим на другую ссылку и обратно на #/somelink - уже не срабатывает, т.е. не отправляется ajax-запрос. В чем может быть проблема одноразовой работы? Такое чувство, как будто где-то в кэше сидит и при повторном переходе на ту же ссылке, отдает из кэша. Но это конечно мое предположение ... какие мысли могут быть?
|
Проблема решена! Оказалось, что я переходил по ссылкам, УРЛ менялись, а запрос отправлялся только на одной тестовой ссылке. Поэтому ngProgress срабатывал один раз.
|
Проблема до сих пор актуальна, шаблон загружается только один раз, помогите пожалуйста. Код:
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(); }); }); |
В общем плюнул на этот костыльный ангуляр и сам написал свой роутер. Кошмар какой-то
|
Часовой пояс GMT +3, время: 00:52. |