7

Я разрабатываю приложение в AngularJS. В принципе, у меня есть «домашняя страница» и «новый проект». На домашней странице у меня есть меню со ссылкой на «новый проект».Как перенаправить на другое представление при обновлении в AngularJS?

я настроил $ stateProvider следующим образом:

$stateProvider.state('home', { 
    url: '/', 
    templateUrl: 'partials/home.jsp' 
}).state('newproject', { 
    url: '/newproject', 
    templateUrl: 'partials/new-project.html' 
}) 

Так что, когда я войти в приложение, я нахожусь в домашней странице. Затем я нажимаю ссылку «новый проект», и я попадаю на страницу «новый проект». Теперь URL является http://myapp/newproject

Моя проблема в том, когда я обновить страницу, я хочу быть перенаправлены на главную страницу, даже если адрес в моем строке браузера по-прежнему http://myapp/newproject

Как может Я этого добился?

UPDATE:

Большое спасибо squiroid для ответа. Я использовал второе решение, и он работал как шарм. Немного разъяснений, на всякий случай, если кто-то должен иметь такую ​​же проблему, прежде чем перенаправлять домой, вы должны предотвратить работу по умолчанию. Таким образом, правильный рабочий код:

$rootScope.$on("$locationChangeStart", function(event, next, current) { 

if(next==current && next=='/newproject') 
    event.preventDefault(); 
    $state.go('home'); 

});

ответ

14

Используйте это в вашем контроллере «новыйПроекта» он слушает ваше обновление:

$rootScope.$on('$locationChangeStart', function(event) { 
    $state.go('home'); 
}); 

или поместить это в app.run();

$rootScope.$on("$locationChangeStart", function(event, next, current) { 

    if(next==current && next=='/newproject') 
     $state.go('home'); 

}); 
+0

Добро пожаловать, пожалуйста, отметьте его и upvote если вы удовлетворяете :-) и +1 для event.preventDefault() я забыл. – squiroid

+0

отмечены! жаль, что я не могу повышать свою репутацию из-за точек репутации (я <15) – user1840039

+0

Его хорошо приятно помочь вам. – squiroid