我有一个角页面,并根据如果页面对象中的值等于特定值,我想也许加载另一个状态,我说也许,因为如果它不是然后我不需要加载另一个视图(但也许这是这是怎么回事了?)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