UI-Router - 페이지 재렌더/재로드 없이 $state 변경
이 페이지(1, 2, 3)를 보고 있습니다.저는 기본적으로 제 기능을$state
페이지를 새로고침하지 않도록 하겠습니다.
현재 페이지에 있습니다./schedules/2/4/2014
버튼을 클릭했을 때 편집 모드로 들어가 URL이 변경되도록 하고 싶다./schedules/2/4/2014/edit
.
나의edit
상태는 단순하다$scope.isEdit = true
페이지 전체를 새로고침할 필요가 없습니다.하지만, 난 정말 그 사람이$state
및/또는url
사용자가 페이지를 새로 고친 경우 편집 모드로 시작하도록 변경합니다.
내가 뭘 할 수 있을까?
이 문제에 대해서는, 다음의 어느쪽도 가지지 않는 자스테이트를 작성할 수 있습니다.templateUrl
도 아니다controller
, 및 그 사이를 진행하다states
통상:
// UPDATED
$stateProvider
.state('schedules', {
url: "/schedules/:day/:month/:year",
templateUrl: 'schedules.html',
abstract: true, // make this abstract
controller: function($scope, $state, $stateParams) {
$scope.schedDate = moment($stateParams.year + '-' +
$stateParams.month + '-' +
$stateParams.day);
$scope.isEdit = false;
$scope.gotoEdit = function() {
$scope.isEdit = true;
$state.go('schedules.edit');
};
$scope.gotoView = function() {
$scope.isEdit = false;
$state.go('schedules.view');
};
},
resolve: {...}
})
.state('schedules.view', { // added view mode
url: "/view"
})
.state('schedules.edit', { // both children share controller above
url: "/edit"
});
여기서 중요한 개념은ui-router
응용 프로그램이 특정 상태에 있는 경우(상태가 "active"일 경우) 모든 상위 상태도 암묵적으로 활성화됩니다.
자, 이 경우,
- 응용 프로그램이 보기 모드에서 편집 모드로 진행되면 상위 상태
schedules
(그와 함께)templateUrl
,controller
그리고 심지어resolve
)는 그대로 유지됩니다. - 상위 상태는 암묵적으로 활성화되므로 하위 상태가 새로 고쳐지거나 북마크에서 직접 로드되는 경우에도 페이지는 올바르게 렌더링됩니다.
참조: https://github.com/angular-ui/ui-router/wiki/Quick-Reference#statetransitiontoto-toparams--options
$state.transitionTo('yourState', params, {notify: false});
답변이 인정된 답변과 충분히 다르며 다른 사람에게 도움이 될 수 있기 때문에 답변을 추가합니다.
두 개의 주가 있었는데begin
그리고.view
다수의 옵션 파라미터가 의 URL과 동기화되어 있습니다.view
다음과 같은 경우:
$stateProvider
.state('begin',
{
url: '/',
template: '<app-element></app-element>'
})
.state('view',
{
url: '/View?param1¶m2&...¶mN',
template: '<app-element></app-element>'
params: {
param1: {
value: null,
squash: true
},
...
}
});
링크 함수<app-element>
를 사용하여 파라미터를 동기화하려고 하면 언제든지 실행됩니다.$state.go
.사용.{notify: false, reload: false}
효과가 없었습니다.링크 기능은 매번 실행 중.지금 0.2니까dynamic
param 옵션도 사용할 수 없습니다.나는 @b0nyb0y의 제안을 따라 그것을 부모/자녀 관계로 바꾸었고, 그것은 효과가 있었다.
$stateProvider
.state('app',
{
url: '/',
template: '<app-element></app-element>'
})
.state('app.view',
{
url: 'View?param1¶m2&...¶mN',
params: {
param1: {
value: null,
squash: true
},
...
}
});
언급URL : https://stackoverflow.com/questions/24581610/ui-router-change-state-without-rerender-reload-of-the-page
'programing' 카테고리의 다른 글
스프링 부트 프로젝트(JAR 또는 WAR 양쪽에 도입) 1개 (0) | 2023.04.06 |
---|---|
페이지를 새로고침하지 않고 형식의 비밀번호 확인 필드를 확인하는 방법 (0) | 2023.04.06 |
제목 없는 Wordpress 동적 사이드바 (0) | 2023.04.06 |
투고 요청 본문에 있는 Json 객체에 사용자 이름과 비밀번호를 전송해도 안전한가요? (0) | 2023.04.06 |
스프링 부트 클래스 패스 (0) | 2023.04.06 |