javascript - версии - ng-attr-title




Как перезагрузить или повторно отобразить всю страницу с помощью функции AngularJS (9)

После рендеринга всей страницы на основе нескольких пользовательских контекстов и создания нескольких запросов $http , я хочу, чтобы пользователь мог переключать контексты и повторно отображать все снова (пересылать все $http запросы и т. Д.). Если я просто перенаправляю пользователя в другое место, все работает правильно:

$scope.on_impersonate_success = function(response) {
  //$window.location.reload(); // This cancels any current request
  $location.path('/'); // This works as expected, if path != current_path
};

$scope.impersonate = function(username) {
  return auth.impersonate(username)
    .then($scope.on_impersonate_success, $scope.on_auth_failed);
};

Если я использую $window.location.reload() , то некоторые из $http запросов на auth.impersonate(username) , которые ждут ответа, будут отменены, поэтому я не могу использовать это. Кроме того, hack $location.path($location.path()) тоже не работает (ничего не происходит).

Есть ли другой способ повторно отобразить страницу без повторного ввода всех запросов вручную?


Возможно, вы забыли добавить «$ route» при объявлении зависимостей вашего контроллера:

app.controller('NameCtrl', ['$scope','$route', function($scope,$route) {   
   // $route.reload(); Then this should work fine.
}]);

Для записи, чтобы заставить углы повторно отобразить текущую страницу, вы можете использовать:

$route.reload();

Согласно documentation AngularJS:

Заставляет $ route service перезагружать текущий маршрут, даже если $ location не изменилось.

В результате, ngView создает новую область, восстанавливает контроллер.


Если вы используете угловой ui-router, это будет наилучшим решением.

$scope.myLoadingFunction = function() {
    $state.reload();
};

Если вы хотите обновить контроллер при обновлении любых сервисов, которые вы используете, вы можете использовать это решение:

  • Вложение $ state

т.е.

app.controller('myCtrl',['$scope','MyService','$state', function($scope,MyService,$state) {

    //At the point where you want to refresh the controller including MyServices

    $state.reload();

    //OR:

    $state.go($state.current, {}, {reload: true});
}

Это обновит контроллер и HTML, а также вы можете вызвать его Refresh или Re-Render .


Попробуйте следующее:

$route.reload(); // don't forget to inject $route in your controller
$window.location.reload();
location.reload();

Самое простое решение, которое я понял,

добавьте '/' на маршрут, который нужно перезагружать каждый раз при возвращении.

например:

вместо следующего

$routeProvider
  .when('/About', {
    templateUrl: 'about.html',
    controller: 'AboutCtrl'
  })

использовать,

$routeProvider
  .when('/About/', { //notice the '/' at the end 
    templateUrl: 'about.html',
    controller: 'AboutCtrl'
  })

Я много лет боролся с этой проблемой, и единственным решением, которое сработало для меня, является следующее:

var landingUrl = "http://www.ytopic.es"; //URL complete
$window.location.href = landingUrl;

Я получил этот рабочий код для удаления кеша и перезагрузки страницы

Посмотреть

        <a class="btn" ng-click="reload()">
            <i class="icon-reload"></i> 
        </a>

контроллер

Инъекторы: $ scope, $ state, $ stateParams, $ templateCache

       $scope.reload = function() { // To Reload anypage
            $templateCache.removeAll();     
            $state.transitionTo($state.current, $stateParams, { reload: true, inherit: true, notify: true });
        };

Перед Angular 2 (AngularJs)

Через маршрут

$route.reload();

Если вы хотите перезагрузить все приложение

$window.location.reload();

Угловая 2+

import { Location } from '@angular/common';

constructor(private location: Location) {}

ngOnInit() {  }

load() {
    this.location.reload()
}

Или же

constructor(private location: Location) {}

ngOnInit() {  }

Methods (){
    this.ngOnInit();
}






rerender