【发布时间】:2015-05-20 00:06:07
【问题描述】:
我有一个角度页面,根据 Page 对象中的值是否等于特定值,我可能会加载另一个状态,我说可能,因为如果不是,那么我不需要加载另一个视图(但也许这就是问题所在?)
这是我当前的状态配置
$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 的基本状态,它会加载我的基本页面(一切正常)。
我还有 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');
}]);
app/page/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>
app/main/main.html
<div class="container">
<div class="wrapper">
<!-- content -->
<div ui-view class="content"></div>
</div>
</div>
现在我认为子状态与它们的父状态具有相同的解析,但是当 app.page.search 解析执行时,它会抛出一个错误,指出页面未定义。
如何从 app.page.search 访问 app.Page 解析?
我显然设置不正确,但不确定是什么。
正如我之前所说,app 应该加载我的基本页面(它确实如此),app.page 应该加载我的页面内容,app.page.search 应该根据 app.Page 中加载的 Page 对象加载更多内容解决。也许我不应该改变 pageController 中的状态?但我不知道您是否可以从另一个状态配置中更改状态?
【问题讨论】:
标签: javascript angularjs angular-ui-router