带ui-router的子状态未解析
Child state with ui-router not resolved
我仍然在做一个angular应用程序,使用伟大的ui-router
。我想使用一些动态嵌套状态(我在这里讨论过),所以我知道这是可能的。
.state('home', {
url: '/home',
controller: 'RouteCtrl'
})
.state('home.state', {
url: '/home/:state',
controller: 'RouteCtrl'
})
$urlRouterProvider.otherwise('/home')
我有3个按钮(更具体地说,我使用<a>
来制作)来访问3个不同的状态:"home","contact"answers"about"。'contact'和'about'是'home'嵌套状态,每个状态在激活时都有一个特定的文本要显示。
不幸的是,似乎两个子状态都没有从'home'状态解决。
这是一个与我的问题相匹配的问题的概要。你知道吗?这将给你一个新的状态的工作调用:
$scope.redirect = function(state) {
console.log('redirect to state : ' + state);
if (state != 'home') {
$state.go('home.state', {
'state': state
});
} else {
$state.go('home');
}
}
但是,它仍然不会改变页面上的文本,因为控制器在初始加载时只设置一次。
严格来说,home、contact和about不是3个状态。你所做的似乎是根据状态的参数来改变内容。当你使用$state.go
时,可以使用一个状态并强制ui-router重新加载该状态。我在这里修改了你的plunkr http://plnkr.co/edit/XXaltjG17FwY15tSbKaD?p=preview
你的状态定义可以像这样,
.state('home', {
url: '/home?state',
controller: 'RouteCtrl'
})
问号使状态参数可选,也是一个查询字符串。
重定向可以看起来像这样。你需要重新加载,因为你要去相同的路由
$state.go('home', {state: state}, {reload: true});
重定向到主页可能看起来像这样。您需要禁用此重定向的继承,因为您不想保留查询字符串。
$state.go('home',{}, {reload: true, inherit: false});
这里的主要问题是您希望在状态中有一个变量。你不能进入状态home.about
,因为它不是给定的.state
。
你应该看看stateParams
,或者你可以用Angular的$location
指定你想去的URL。
注意:我认为像home.state
这样的子状态的url不需要/home
url,因为它在父亲的状态
相关文章:
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- Angular JS/UI Router:为给定状态禁用指令
- AngularJS - ui.router - 如何在动态添加它们后重定向到所需的状态
- Angular UI Router Resolve在AJAX完成之前未阻止状态更改
- 如何使用Angular UI Router解析所有状态的数据
- 使用Angular UI Router,如何使一个状态成为所有状态的子状态
- 需要 / 角度 / 业力 / ui-router - 错误:无法从状态“”解析“登陆”
- AngularJS ui-router 使用 $state.params 和查询导航状态
- 嵌套状态 URL 在 angular-ui-router 中不正确
- 在一个视图和相同的url angularjs ui-router中加载来自不同状态的视图
- 如何使用 ui-router 将子项或孙项状态设置为默认索引状态
- ui.router同级状态
- Angular ui.router设置祖先状态命名视图
- Angular UI Router-子状态和父状态中的参数返回错误的模板
- 如何在ui.router中更改状态时正确刷新范围
- 当网站第一次加载时加载一个ui-router状态
- Angular UI Router——当使用UI -sref导航到动态状态时,会得到双斜杠
- 当使用$state时,ui-router中的双状态改变.进入$stateChangeStart
- Angular UI Router:根据父解析对象来决定子状态模板
- 如何减少'状态'templateUrl'使用Angular Ui-Router