[angularjs] 현재 상태를 다시로드하는 방법?
Angular UI Router를 사용하고 있으며 현재 상태를 다시로드하고 모든 데이터를 새로 고치거나 현재 상태 및 상위에 대한 컨트롤러를 다시 실행하고 싶습니다.
나는 3 가지 상태 수준이 있습니다 : directory.organisations.details
directory.organisations 에는 조직 목록이 포함 된 테이블이 있습니다. 테이블로드의 항목을 클릭 directory.organisations.details 항목의 ID를 전달 $ StateParams와. 세부 정보 상태 에서이 항목의 세부 정보를로드하고 편집 한 다음 데이터를 저장합니다. 지금까지는 괜찮 았습니다.
이제이 상태를 다시로드하고 모든 데이터를 새로 고쳐야합니다.
나는 시도했다 :
$state.transitionTo('directory.organisations');
부모 상태로 이동하지만 컨트롤러를 다시로드하지 않는 경로는 변경되지 않았기 때문입니다. 이상적으로는 directory.organisations.details 상태 를 유지 하고 부모의 모든 데이터를 새로 고치기를 원합니다 .
나는 또한 시도했다 :
$state.reload()
나는 $ state.reload에 대한 API WIKI에서 이것을 보았습니다.
도움이 필요하십니까?
답변
나는 이것이 ui-router로 새로 고치는 가장 짧은 작업 방법이라는 것을 알았습니다.
$state.go($state.current, {}, {reload: true}); //second parameter is for $stateParams
최신 버전 업데이트 :
$state.reload();
다음에 대한 별명입니다.
$state.transitionTo($state.current, $stateParams, {
reload: true, inherit: false, notify: true
});
설명서 : https://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state#methods_reload
답변
이 솔루션은 AngularJS V.1.2.2에서 작동합니다.
$state.transitionTo($state.current, $stateParams, {
reload: true,
inherit: false,
notify: true
});
답변
이것이 최종 해결책이 될 것입니다. (@Hollan_Risley의 게시물에서 영감을 얻음)
'use strict';
angular.module('app')
.config(function($provide) {
$provide.decorator('$state', function($delegate, $stateParams) {
$delegate.forceReload = function() {
return $delegate.go($delegate.current, $stateParams, {
reload: true,
inherit: false,
notify: true
});
};
return $delegate;
});
});
이제 다시로드해야 할 때마다 다음을 호출하십시오.
$state.forceReload();
답변
이온 프레임 워크
$state.transitionTo($state.current, $state.$current.params, { reload: true, inherit: true, notify: true });//reload
$stateProvider.
state('home', {
url: '/',
cache: false, //required
답변
아마도 더 깨끗한 접근법은 다음과 같습니다.
<a data-ui-sref="directory.organisations.details" data-ui-sref-opts="{reload: true}">Details State</a>
HTML에서만 상태를 다시로드 할 수 있습니다.
답변
@Holland Risley의 답변은 최신 UI 라우터에서 API로 사용할 수 있습니다.
$state.reload();
현재 상태를 강제로 다시로드하는 방법입니다. 모든 해결이 다시 해결되고 컨트롤러가 다시 인스턴스화되며 이벤트가 다시 발생합니다.
http://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state
답변
$state.go($state.current, $stateParams, {reload: true, inherit: false});