gpt4 book ai didi

javascript - AngularJS UI-Router - 无法获得嵌套状态来显示模板

转载 作者:搜寻专家 更新时间:2023-11-01 05:30:06 25 4
gpt4 key购买 nike

我不知道我做错了什么,但这就是我想要的。

首先,这是我的 body :

 <body>
<div ng-app="testApp" ng-controller="MainController" class="container-fluid">
<div ui-view class="row"></div>
</div>

</body>

现在,在 ui-view 中,我想要一些取决于 URL 的内容。首先,将有包含其他州的母国。

 - Home
- Recent Studies
- Studies
- Map
- Study

为此,我尝试创建一个路由层次结构。这将是我的主页模板 (home.html),一个抽象的模板,将出现在上面的 ui-view 中:

<div ng-controller="HomeController">
<header>
<div class="row">
<div class="col-xs-6">Test Web Application</div>
<div class="col-xs-6">
<p class="pull-right">Bonjour
<strong>{{currentAccount.name}}</strong> !
<a href="#">Déconnexion</a></p>
</div>
</div>
</header>

<article class="row">
<div ui-view></div>
</article>

</div>

这是最近的研究(home.recentStudies.html.twig),我想将其放入 home.html 的 ui View 中:

<p>Recent studies</p>

这里是路由定义:

angular.module('testApp').config(['$stateProvider', '$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/recentStudies');
$stateProvider
.state('home', {
url: '/',
abstract: true,
templateUrl: 'partials/home.html'
})
.state('home.recentStudies', {
url: '/recentStudies',
templateUrl: 'partials/home.recentStudies.html'
})
.state('home.studies', {
url: '/studies',
templateUrl: 'partials/studies.html'
})
;

}]);

我的问题是,当我加载应用程序时,一切都是空白,我似乎不明白这个问题。

好像不能在plnkr中使用templateUrl所以我直接将代码转入template:

http://plnkr.co/edit/kGIxPSNXGy2MLLhXFXva?p=preview

最佳答案

重点是父子 url 的组合。这很容易奏效

$urlRouterProvider.otherwise('//recentStudies');

查一下here

为什么?因为子状态的 url 是从其祖先构建的。所以 'home' 状态有 url url: '/', 而子 'home.recentStudies' 有 url: '/recentStudies',

所有这些都意味着 - 完整的 url 是这些联系方式 === '//recentStudies'

但这不是最好的方法。我们可以对 child 使用重置:

.state('home.recentStudies', {
url: '^/recentStudies',

...
$urlRouterProvider.otherwise('/recentStudies');

然后即使是原始的默认设置也能正常工作。查一下here

查看文档:

Absolute Routes (^)

If you want to have absolute url matching, then you need to prefix your url string with a special symbol '^'.

$stateProvider
.state('contacts', {
url: '/contacts',
...
})
.state('contacts.list', {
url: '^/list',
...
});

关于javascript - AngularJS UI-Router - 无法获得嵌套状态来显示模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32789198/

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