Как изменить URL-адрес без перезагрузки страницы при нажатии кнопки «Назад» в angularjs?

Я использую angularjs для своего приложения. Он содержит новостную ленту. Если пользователю нужно просмотреть определенную новость, он должен нажать на эту конкретную новость, и он будет перенаправлен на эту новость. И после просмотра конкретной новости, если пользователь хочет вернуться к ленте новостей (предыдущая страница), он должен нажать кнопку «Назад» в браузере. Итак, в этом случае, если пользователь нажимает кнопку «Назад» в браузере, страница новостной ленты снова перезагружается. Но, я не хочу, как это. Я хочу отключить перезагрузку и вывести пользователя на то место, где он был раньше. Я много просматривал эту проблему, но абсолютного решения не было. Пожалуйста, помогите мне.


person Virtual Realist    schedule 12.06.2015    source источник
comment
Когда пользователь нажимает на определенную новость, перезагружается ли страница? Можете ли вы показать конфигурацию $routeProvider?   -  person Rahil Wazir    schedule 12.06.2015
comment
Если пользователь нажимает на определенную новость, он перенаправляет его с «/myapp/newsfeed» на «/myapp/news/:newsId».   -  person Virtual Realist    schedule 12.06.2015


Ответы (2)


Когда вы вернетесь, будет запущен предыдущий маршрут, и данные будут перезагружены. Если вы хотите предотвратить перезагрузку, поместите службу между ними и кэшируйте данные.

 $routeProvider.
  when('/loadFeeds',{
    controller:'LoadFeedCtrl',
    templateUrl:'pages/feeds.html',
    resolve:{
        initData : function(FeedService){
          return $q.all(
                    {
                        data: FeedService.load() 
                    }
                 );
        }
    }
  })

И в вашем FeedService вместо того, чтобы делать http-вызов, попробуйте увидеть, что данные уже доступны

.service('FeedService',function($q,$timeoute){
    this.feeds=[];
    this.load = function(){
           var deferred = $q.defer();
               $timeout(function(){
                  if(feeds.length===0){
                    this.feeds.push({title:'First','id':1})
                    this.feeds.push({title:'Second','id':2})
                    this.feeds.push({title:'Third','id':3})
                    this.feeds.push({title:'Fourth','id':4})
                  }
                  deferred.resolve(this.feeds);
               },2000);
          return deferred.promise;
    };
})

Службу тайм-аута можно заменить на $http или $resource. Я использовал тайм-аут для имитации задержки

person Bibin    schedule 12.06.2015

вы можете взять якорную ссылку и при щелчке по якорю вызвать эту функцию javascript

window.window.history.back(); 

вот html код для него

   <input type="button" id="alnkBack"  onclick="window.window.history.back();" value="Back" class="button" />
person Sachin Verma    schedule 12.06.2015