我有一個角頁面,並根據如果頁面對象中的值等於特定值,我想也許加載另一個狀態,我說也許,因爲如果它不是然後我不需要加載另一個視圖(但也許這是這是怎麼回事了?)Angular UI路由器 - 解決孩子和父母
這是我目前的狀態配置
$stateProvider
.state('app', {
url: '',
abstract: true,
templateProvider: ['$templateCache', function ($templateCache) {
return $templateCache.get('app/main/main.html');
}],
controller: 'MainController',
resolve: {
Pages: ['PageApi', function (PageApi) {
return PageApi.getAll();
}]
}
})
.state('app.page', {
url: '/page/{id}',
params: {
id: { value: 0 }
},
templateProvider: ['$templateCache', function ($templateCache) {
return $templateCache.get('app/page/page.html');
}],
controller: 'PageController',
resolve: {
Page: ['$stateParams', 'PageApi', function ($stateParams, PageApi) {
return PageApi.get($stateParams.id);
}],
Contents: ['$stateParams', 'ContentApi', function($stateParams, ContentApi) {
return ContentApi.getByPage($stateParams.id);
}]
}
})
.state('app.page.search', {
templateProvider: ['$templateCache', function ($templateCache) {
return $templateCache.get('app/page/partials/page-search.tpl.html');
}],
controller: 'PageSearchController',
resolve: {
Module: ['ModuleApi', 'Page', function(ModuleApi, Page) {
return ModuleApi.get(Page.moduleId);
}]
}
})
正如你可以看到我有我的基本狀態稱爲應用程序,加載我的基本頁面(一切正常)。
我也有app.page這將載入我的部分page.html中(再次罰款)
app.page使用該控制器和該部分的html文件。
angular.module('app').controller('PageController', ['$state', '$scope', 'Page', 'Contents',
function ($state, $scope, Page, Contents) {
if (Page.action == 'search')
$state.go('app.page.search');
}]);
應用程序/頁/ page.html中
<!-- main -->
<section role="main" class="row">
<div ui-view></div>
<div ng-if="showSide" class="col-md-3">
<div page-location location="side"></div>
</div>
</section>
應用程序/主/ main.html中
<div class="container">
<div class="wrapper">
<!-- content -->
<div ui-view class="content"></div>
</div>
</div>
現在我認爲孩子的狀態有同樣的解析爲他們的父母,但當app.page.search解析執行時,它會拋出一個錯誤,說明Page未定義。
如何訪問app.page從app.page.search解析?
我明顯地設置了錯誤的東西,但不知道是什麼。
正如我之前所說,應用程序應該加載我的基本頁面(它所做的),app.page應該加載我的頁面內容,而app.page.search應該加載更多的內容,取決於應用中加載的Page對象。頁面解析。也許我不應該改變pageController中的狀態?但我不知道你是否可以在另一個狀態配置中更改狀態?
如果使用nginclude反正有阻止第二次加載,直到一些承諾已解決像你可以與國家? – Gillardo
其實沒有。在我的知識中,我不知道用ng-include來解決問題的方法。也許第一個是你的用例。 – Okazari