[javascript] AngularJS를 사용하여 전체 페이지를 다시로드하거나 다시 렌더링하는 방법
여러 사용자 컨텍스트를 기반으로 전체 페이지를 렌더링하고 여러 $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)
$location.path($location.path())
모든 요청을 수동으로 다시 발행하지 않고 페이지를 다시 렌더링하는 다른 방법이 있습니까?
답변
레코드의 경우 각도가 현재 페이지를 다시 렌더링하도록하려면 다음을 사용할 수 있습니다.
$route.reload();
AngularJS 문서 에 따르면 :
$ location이 변경되지 않은 경우에도 $ route 서비스가 현재 경로를 다시로드합니다.
그 결과 ngView는 새로운 범위를 생성하고 컨트롤러를 다시 인스턴스화합니다.
답변
$route.reload()
컨트롤러를 다시 초기화하지만 서비스는 초기화하지 않습니다. 응용 프로그램의 전체 상태를 재설정하려면 다음을 사용할 수 있습니다.
$window.location.reload();
이것은 $ window 서비스 주입에 액세스 할 수 있는 표준 DOM 메소드 입니다 .
예를 들어 Django 또는 다른 웹 프레임 워크를 사용하고 새로운 서버 측 렌더링을 원할 때와 같이 서버에서 페이지를 다시로드하려면 문서에서 설명한대로 true
매개 변수 로을 전달하십시오 . 서버와의 상호 작용이 필요하기 때문에 속도가 느려질 수 있습니다.reload
앵귤러 2
위에서 내가 각도 2를 사용하고 있지 않다 각도 1. 적용, 서비스와 같은 모습이있다, 거기에 다른 Router
, Location
하고 DOCUMENT
. 나는 거기에서 다른 행동을 테스트하지 않았다
답변
주어진 경로 경로에 대한 페이지를 다시로드하려면 :-
$location.path('/path1/path2');
$route.reload();
답변
각도 UI 라우터를 사용하는 경우 이것이 가장 좋은 솔루션입니다.
$scope.myLoadingFunction = function() {
$state.reload();
};
답변
컨트롤러의 종속성을 선언 할 때 “$ route”를 추가하는 것을 잊었을 수 있습니다.
app.controller('NameCtrl', ['$scope','$route', function($scope,$route) {
// $route.reload(); Then this should work fine.
}]);
답변
모든 것을 다시로드하려면 window.location.reload (); angularjs로
작업 예 확인
HTML
<div ng-controller="MyCtrl">
<button ng-click="reloadPage();">Reset</button>
</div>
앵귤러 JS
var myApp = angular.module('myApp',[]);
function MyCtrl($scope) {
$scope.reloadPage = function(){window.location.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라고도 합니다.