2014-10-20 9 views
0

Я хочу, чтобы иметь возможность использовать один маршрут для двух разных видов.Angularjs - один маршрут два возможных вида

Например, прямо сейчас у меня есть два маршрута.

Один/дом, который является главной страницы, когда кто-то может зарегистрироваться/войти в систему

, а другой/корма, это когда пользователь вошел в систему.

То, что я хочу сделать, это имеющий один маршрут, как твиттер, например:

twitter.com/

первым они просят вас войти в

twitter.com/

Чем мы можем видеть нашу подающую стену. И это все равно одно и то же "/". Надеюсь, я ясно :)

Это мой код до сих пор:

$stateProvider 
      .state('index', { 
       url: '/', 
       controller: function($state, $auth) { 
        $auth.validateUser() 
         .then(function(resp) { 
          $state.go('feed'); 
         }) 
         .catch(function(resp) { 
          $state.go('home'); 
         }); 
       } 
      }) 

      .state('home', { 
       url: '/home', 
       templateUrl: 'home.html' 
      }) 

      .state('feed', { 
       url: '/feed', 
       templateUrl: 'feed.html' 
      }) 

ответ

2

Насколько я помню, UI-маршрутизатор не поддерживает такую ​​функцию, так что вы должны сделать это самостоятельно.

Что вы можете сделать, так это определить только одно состояние, как в индексе, и вместо того, чтобы выполнять логику $ auth в контроллере, сделайте это в разделе «Решение».

, то вы можете использовать «нг-если» и «нг-включают в себя», чтобы определить, какой файл .html и контроллер вы хотите загрузить, что-то вроде этого:

app.js

$stateProvider 
     .state('index', { 
      url: '/', 
      resolve: { 
       isAuthenticated: function() { 
        return $auth.validateUser().then(function(res) { 
         return true; 
        }, function(error) { 
         return false; 
        }); 
       } 
      }, 
      controller: function($scope, isAuthenticated) { 
       $scope.isAuthenticated = isAuthenticated; 
      }, 
      templateUrl: 'index.html' 
     }) 

index.html

<div ng-if="isAuthenticated"> 
    <div ng-include="'feed.html'"></div> 
</div> 

<div ng-if="!isAuthenticated"> 
    <div ng-include="'login.html'"></div> 
</div> 
+0

Благодаря Асаф! ;) – user2037696

+0

Добро пожаловать! –

Смежные вопросы