답변:
서비스 reload
방법을 사용할 수 있습니다 $route
. $route
컨트롤러에 주입 한 다음에 메소드를 작성 reloadRoute
하십시오 $scope
.
$scope.reloadRoute = function() {
$route.reload();
}
그런 다음 다음과 같이 링크에서 사용할 수 있습니다.
<a ng-click="reloadRoute()" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
이 방법을 사용하면 현재 경로가 다시로드됩니다. 그러나 전체 새로 고침을 수행하려는 경우 다음을 주입 $window
하여 사용할 수 있습니다.
$scope.reloadRoute = function() {
$window.location.reload();
}
나중에 편집 (ui-router) :
답변에서 JamesEddyEdwards와 Dunc이 언급했듯이 angular-ui / ui-router 를 사용하는 경우 다음 방법을 사용하여 현재 상태 / 경로를 다시로드 할 수 있습니다. $state
대신에 주사 $route
하면 다음이 있습니다.
$scope.reloadRoute = function() {
$state.reload();
};
window
더 쉬운 테스트와 조롱을$window
위해 서비스를 통해 객체를 사용할 수 있습니다.
$scope.reloadPage = function(){$window.location.reload();}
그리고 :
<a ng-click="reloadPage" class="navbar-brand" title="home" data-translate>PORTAL_NAME</a>
참고로, $ route.reload () 실제로 실제로 페이지를 다시로드한다고 생각하지는 않지만 route 만 생각 합니다 .
$window
대신에 사용 하는 것이 좋습니다 window
.
location.reload();
트릭을 수행합니다.
<a ng-click="reload()">
$scope.reload = function()
{
location.reload();
}
경로가 필요하거나 평범한 오래된 JS가 필요하지 않습니다.
Alexandrin의 답변과 비슷하지만 $ route 대신 $ state를 사용합니다.
(JimTheDev의 SO 답변 에서 여기에 있습니다 .)
$scope.reloadState = function() {
$state.go($state.current, {}, {reload: true});
}
<a ng-click="reloadState()" ...
앵귤러 2+
Angular 2+를 검색하는 동안 이것을 찾았으므로 다음과 같은 방법입니다.
$window.location.reload();
Angular 1.5-전체 페이지를 새로 고치지 않고 데이터 만 다시로드하려는 위의 솔루션 중 일부를 시도한 후 데이터를 올바르게로드하는 데 문제가있었습니다. 그러나 다른 경로로 이동 한 다음 현재로 돌아갈 때 모든 것이 잘 작동하지만을 사용하여 현재 경로를 다시로드하려는 경우 $route.reload()
일부 코드가 제대로 실행되지 않습니다. 그런 다음 다음 방법으로 현재 경로로 리디렉션하려고했습니다.
$scope.someFuncName = function () {
//go to another route
$location.path('/another-route');
};
그리고 모듈 설정에서 다른 것을 추가하십시오 when
:
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/first-page', {
templateUrl: '/first-template',
controller: 'SomeCtrl'
}).when('/another-route', {//this is the new "when"
redirectTo: '/first-page'
});
}])
그리고 그것은 나를 위해 잘 작동합니다. 전체 페이지를 새로 고치지는 않지만 현재 컨트롤러와 템플릿을 다시로드합니다. 나는 그것이 약간 해 키다는 것을 알고 있지만 그것이 내가 찾은 유일한 해결책이었다.
var reload = $location.url(); $location.url(''); $timeout(function() { $location.url(reload); });
; 임의의 경로를 만들 필요가 없습니다. 그러나 어떤 코드가 다시 평가되지 않는지 보는 것은 흥미로울 것입니다. redirectTo
s 및 resolve
함수 조차도 정상에서 다시 실행되는$route.reload()
것처럼 보입니다 (console.log 참조).
<a title="Pending Employee Approvals" href="" ng-click="viewPendingApprovals(1)">
<i class="fa fa-user" aria-hidden="true"></i>
<span class="button_badge">{{pendingEmployeeApprovalCount}}</span>
</a>
컨트롤러에서
$scope.viewPendingApprovals = function(type) {
if (window.location.hash.substring(window.location.hash.lastIndexOf('/') + 1, window.location.hash.length) == type) {
location.reload();
} else {
$state.go("home.pendingApproval", { id: sessionStorage.typeToLoad });
}
};
그리고 경로 파일에서
.state('home.pendingApproval', {
url: '/pendingApproval/:id',
templateUrl: 'app/components/approvals/pendingApprovalList.html',
controller: 'pendingApprovalListController'
})
따라서 URL에 전달 된 ID가 앵커를 클릭하여 호출 된 함수에서 오는 것과 동일하면 다시로드하고 요청 된 경로를 따라갑니다.
도움이된다면이 답변을 개선하도록 도와주세요. 제안은 환영합니다.
JavaScript에서 reload () 메소드를 호출하여 수행 할 수 있습니다.
location.reload();