2014-10-26 2 views
1

У меня есть следующая конфигурация в моем AngularJS App:Избегайте прямой доступ к мнению (угловая UI-маршрутизатор) в AngularJS

angular 
    .module('MyApp') 
    .config(['$stateProvider', '$urlRouterProvider', '$locationProvider', 
     function($stateProvider, $urlRouterProvider, $locationProvider) { 
      $urlRouterProvider.otherwise('start'); 

      $stateProvider 
       .state('start', { 
        url : '/start', 
        templateUrl : 'views/start.html', 
        controller : 'AppCtrl' 
       }) 
       .state('quotation', { 
        url : '/quotation', 
        templateUrl : 'views/quotation.html', 
        controller : 'AppCtrl' 
       }) 
       .state('loading', { 
        url : '/loading', 
        templateUrl : 'views/loading.html' 
       }); 
     }]); 

Когда тип пользователя http://example.net «Пуск» вид загружается хорошо http://example.net/#/start, но если пользователь вводит напрямую http://example.net/#/quotation, загружается представление «quotation», и у меня есть некоторые проблемы, потому что вызов от начала до цитирования загружает некоторые значения (через REST API), поэтому .. Если пользователь вводит непосредственно это представление, загруженный не верно.

Как я могу избежать прямого доступа к другим представлениям?

+0

это похоже на реализация, скажем, проверки подлинности. Например: http://stackoverflow.com/questions/22537311/angular-ui-router-login-authentication – akonsu

+0

Вы строите мобильное приложение или веб-приложение? –

+0

Вы можете проверить каждое изменение состояния, если есть какое-либо исключение. Если это так, обработайте его, либо перейдя на стартовую страницу, либо показывая сообщение об ошибке – dchhetri

ответ

0

В звезды изменения загрузки страницы установите $rootscope.allowpage=true затем используйте следующий код, он будет проверять, является ли $rootscope.allowpage установлен верно или нет, если $rootscope.allowpage не так он будет перенаправлять на главную страницу

angular.module('MyApp'['ngRoute','ui.bootstrap','timer']) 
.run(function($rootScope,$location) { 
     $rootScope.$on("$routeChangeStart", function(event, next, current) { 
       if ($rootScope.allowpage!= true) { 
        $location.path('start'); 
       }}); 
}); 
Смежные вопросы