gpt4 book ai didi

javascript - 无法让孙子状态与 UI 路由器一起工作

转载 作者:行者123 更新时间:2023-11-30 11:41:46 24 4
gpt4 key购买 nike

我正在使用 Angular 1.6.2 和 UI Router。我仍在尝试正确学习这些概念,但遇到了障碍。

我有一个名为 app 的父状态,使用 MainController,还有一堆子状态。但是,我现在想通过创建孙子状态来更深入。

以下代码在加载 www.example.com/manage-users/edit/1 时留下空白页面,因此不会加载祖 parent 状态。

但是,如果我让 app 成为 edit-users 的父级(我想使第三级更深),它确实有效,但这并不是真正正确的做这件事的方式。因为在此之后我出于其他原因需要使用父状态。

index.html

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<base href="/">
// loading JS/CSS etc
</head>
<body ng-app="sampleApp">
<div class="container">
<div ui-view></div>
</div>
</body>
</html>

parent.html

<div ng-controller="MainController as data">
// more html
<div ui-view></div>
</div>

ma​​nage-users.html

<div class="col-sm-12" ng-controller="UserController as data">
// more html
<div ui-view></div>
</div>

ma​​nage-users-edit.html(仅当我将父状态设置为“app”而不是“manage-users”时才有效

<div>Hello World! This is the Edit HTML Page</div>

app.js 设置状态

$stateProvider
.state('app', {
templateUrl: 'views/parent.html',
controller: 'MainController as data'
})
.state('manage-users', {
parent: 'app',
url: '/manage-users',
templateUrl: 'views/manage-users.html',
controller: 'MainController as main'
})
.state('edit-users', {
parent: 'manage-users',
url: '/manage-users/edit/:id',
templateUrl: 'views/manage-users-edit.html',
controller: 'MainController as main'
});

最佳答案

试试这个:

index.html

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<base href="/">
// loading JS/CSS etc
</head>
<body ng-app="sampleApp">
<div class="container" ui-view="container"></div>
</body>
</html>

parent.html

<div ng-controller="MainController as data">
// more html
<div ui-view="parent"></div>
</div>

ma​​nage-users.html

<div class="col-sm-12" ng-controller="UserController as data">
// more html
<div ui-view="manageusers"></div>
</div>

app.js

$stateProvider
.state('app', {
views:{
'container': {
templateUrl: 'views/parent.html',
controller: 'MainController as data'
}
}
})
.state('app.manage-users', {
url: '/manage-users',
views:{
'parent':{
templateUrl: 'views/manage-users.html',
controller: 'MainController as main'
}
}
})
.state('app.manage-users.edit-users', {
url: '/edit/:id',
views:{
'manageusers':{
templateUrl: 'views/manage-users-edit.html',
controller: 'MainController as main'
}
}
});

您应该始终导航到层次结构的子级。在这种情况下,$state.go('app.manage-users.edit-users')

编辑:

您在状态配置中的 URL 属性是错误的。要达到预期效果,您应该输入 http://exapmle.com/#/manage-users/edit/1

我已经更新了配置,所以从 URL 中删除了额外的管理用户。试一试。

关于javascript - 无法让孙子状态与 UI 路由器一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42397671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com