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




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

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

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

После рендеринга всей страницы на основе нескольких пользовательских контекстов и создания нескольких запросов $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.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