Angular ui-router에서 중첩된 상태의 URL이 변경되었지만 템플릿이 로드되지 않습니다.
네스트된 상태 및 뷰에 ui-router를 사용하고 있습니다.링크를 클릭하면 URL이 서브스테이트의 URL로 변경되지만 템플릿이 로드되지 않습니다.
예를 들어 URL이 서브스테이트로 변경되는 경우project/settings
대응하는 템플릿,project.settings.html
로딩되지 않습니다.
다음은 Plunkr의 SSCE 제공
아래도 제 코드입니다.
app.module
myApp.config(function ($stateProvider, $urlRouterProvider){
$stateProvider
.state('project', {
url: "/project",
views:{
"content":{templateUrl: "partials/project.html"},
"header":{templateUrl: "partials/header"}
}
})
.state('project.settings', {
url: "/settings",
views:{
"content":{templateUrl: "partials/project.settings.html"},
"header":{templateUrl: "partials/header"}
}
})
$urlRouterProvider.otherwise("/")
});
/* cheching whether the user is authentic or not*/
myApp.run(function($rootScope,$location,$cookieStore,validateCookie,$state) {
$rootScope.$on('$stateChangeStart',function(event,toState,toParams,fromState){
if($cookieStore.get('user')){
validateCookie.authService(function(result,error){
if(!result){
$location.path("/");
}else{
$state.go('project.settings');
}
});
}
else{
$location.path("/");
}
});
});
index.displaces를 표시합니다.
<div ng-controller="userController">
<div ui-view="header"></div>
<div class="container" ui-view="content"></div>
</div>
project.discloss를 실행합니다.
<div ng-controller="userController">
<div class="details">
<a ui-sref=".settings" class="btn btn-primary">Settings</a>
</div>
</div>
프로젝트.settings.syslog
<h1>Project Setting -State test</h1>
중첩된 프로젝트.설정 상태는 '@' 접미사를 사용하여 명시적으로 상위 상태의 보기를 처리해야 합니다.
.state('project.settings', {
url: "/settings",
views:{
"content@":{templateUrl: "partials/project.settings.html"},
"header@":{templateUrl: "partials/header"}
}
})
자세한 것은, https://github.com/angular-ui/ui-router/wiki/Multiple-Named-Views#view-names---relative-vs-absolute-names 를 참조해 주세요.
우선 파일 이름 변경project.settings.html
templateurl 및 파일 이름에서projectSettings.html
(점 제거).
.state('project.settings', {
url: "/settings",
views:{
"content":{templateUrl: "partials/projectSettings.html"},
"header":{templateUrl: "partials/header"}
}
})
프로젝트 템플릿에 두 개의 div를 추가하여 하위 페이지를 로드합니다(header abd projectSettings).
주의: 이 디바의 콘텐츠는 여기에 로드된 페이지로 대체됩니다.
project.discloss를 실행합니다.
<div ng-controller="userController">
<div class="details">
<a ui-sref=".settings" class="btn btn-primary">Settings</a>
</div>
<div ui-view="header">( Project Page header will replace with projectSettings header )</div>
<div class="container" ui-view="content">( Project Page content will replace with projectSettings Content )</div>
</div>
저도 같은 문제가 있어서 해결방법은 부모님 템플릿에 ui-view를 배치하는 것이었습니다.파셜도 자 상태에서 템플릿을 로드하는 경우 가 필요하기 때문입니다.https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#issue-my-templates-are-not-appearing--loading--showing 를 참조해 주세요.
UI 라우터에서 중첩된 보기를 사용하는 경우 상위 페이지의 html에 UI 보기를 추가하고 지정된 특정 보기를 포함해야 합니다.
같은 문제가 있었습니다.해결책은 project.html 파일(부모 페이지)을 열고 모든 것을 랩하는 것입니다.<ui-view>
따라서 다음과 같이 교환합니다.
<div ng-controller="userController">
<div class="details">
<a ui-sref=".settings" class="btn btn-primary">Settings</a>
</div>
</div>
다음과 같이 설정합니다.
<ui-view>
<div ng-controller="userController">
<div class="details">
<a ui-sref=".settings" class="btn btn-primary">Settings</a>
</div>
</div>
</ui-view>
그리고 넌 가도 돼;)
사용하다ui-sref="project.settings"
링크용project.html
템플릿입니다.
언급URL : https://stackoverflow.com/questions/21424524/in-angular-ui-router-nested-state-url-changes-but-template-is-not-loading
'source' 카테고리의 다른 글
불필요한 이스케이프 문자 비활성화: \/ no-use-escape (0) | 2023.02.13 |
---|---|
jQuery XML 오류 ' 요청된 리소스에 'Access-Control-Allow-Origin' 헤더가 없습니다. (0) | 2023.02.13 |
리액트 앱의 setInterval (0) | 2023.02.13 |
$.ajax가 포함된 쿼리 문자열 대신 JSON을 전송하려면 어떻게 해야 합니까? (0) | 2023.02.13 |
잭슨 동적 속성 이름 (0) | 2023.02.13 |