"ui-sref"는 링크를 두 번 클릭해도 "ui-view"(컨트롤러가 다시 실행되지 않음)를 새로 고치지 않습니다.
처음에 상태를 클릭하면 "ui-view" 속성을 소유한 div가 해당 상태의 "template"로 바뀝니다.그러나 동일한 상태를 다시 클릭하면 컨트롤러가 다시 로드되지 않습니다.이 컨트롤러를 다시 로드하려면 어떻게 해야 합니까?
예를 들어 다음과 같은 탐색 메뉴가 있다고 가정합니다.
<nav>
<a ui-sref="state1">State 1</a>
<a ui-sref="state2">State 2</a>
</nav>
저의 "ui-view" 컨텐츠는 다음과 같습니다.
<div ui-view></div>
저의 상태는 아래와 같습니다.탐색 메뉴에서 "상태 1"을 클릭하면 텍스트가 관찰됩니다."Ctrl 1 loaded"
에서developer console
. 처음이면 그 글을 관찰합니다.그러나 동일한 링크를 다시 클릭하면 컨트롤러가 다시 로드되지 않으므로 텍스트를 볼 수 없습니다."Ctrl 1 loaded"
콘솔에 두 번 표시됩니다.
myApp.config(function ($stateProvider, $urlRouterProvider){
$stateProvider.state("state1", {
url: "#",
template: "<p>State 1</p>",
controller: "Ctrl1"
}).state("state2", {
url: "#",
template: "<p>State 2</p>",
controller: "Ctrl2"
});
});
왜요? 무슨 생각 있어요?
이 질문의 JSFiddle입니다.
Philippe가 말한 것처럼 이것이 ui-router의 기본 동작이기 때문이지만 링크를 클릭할 때마다 컨트롤러를 다시 로드하려면 실제로 다음과 같이 ui-sref-opts 속성을 사용하여 강제할 수 있습니다.
<a ui-sref="state1" ui-sref-opts="{reload: true}">State 1</a>
여기에서 이 팁을 찾을 수 있습니다.
https://github.com/angular-ui/ui-router/commit/91a568454cc600aa4f34dedc8a80c9be1130b1c5
도움이 되기를 바랍니다.
다른 보기로 이동하기 위한 대체 구문입니다.
<a ui-sref="state1({reload: true})">State 1</a>
컨트롤러에는 이렇게 보일 것입니다.
$state.go('state1', {}, {reload: true});
참고: $state.go의 두 번째 매개 변수는 $stateParams입니다.
왜냐하면 ui-router는 그렇게 설계되어 있기 때문입니다.
컨트롤러가 같은 상태가 아닐 때만 로드됩니다.ui-router는 컨트롤러를 다시 실행하지 않으며 뷰 템플릿을 재평가하지 않습니다.여러 개의 상태에서 동일한 컨트롤러를 사용하고 그 상태 간을 전환해도 컨트롤러가 다시 실행되지 않습니다.
보기가 변경될 때 기능을 실행하려면 이벤트를 듣거나, 또는 이벤트를 입력할 수도 있습니다.ng-click
너의 위에a
요소.
아래 코드만 사용합니다.
$stateProvider.
state('myPage', {
url: '/',
cache: false // add this line
언급URL : https://stackoverflow.com/questions/25155624/ui-sref-does-not-refresh-the-ui-viewits-controller-does-not-rerun-when-a-l
'programing' 카테고리의 다른 글
워드프레스 도커 컨테이너로 리디렉션할 nginx 하위 경로 (0) | 2023.11.04 |
---|---|
스위프트를 가능하게 하는 것UI의 DSL? (0) | 2023.11.04 |
스프링 부트 탄성 검색 구성 (0) | 2023.11.04 |
connect to maria db with mauricio/postgresql-mysql driver in play2.5 (0) | 2023.11.04 |
오류: 언어 c에 대한 사용 권한이 거부되었습니다. (0) | 2023.11.04 |