我正在尝试使用ui-router为我的角应用创建路由。我有基本的概念例子。我需要的是"这是地图"显示路线(总是)但是"这是关于我们的#34;仅在导航到#/about
。
的index.html:
<html lang="en" >
<head>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.4.2/angular-ui-router.js"></script>
<script type="text/javascript" src="<?php echo base_url('app/app.module.js'); ?>"></script>
<script type="text/javascript" src="<?php echo base_url('app/app.config.js'); ?>"></script>
</head>
<body ng-app="jigup">
<ui-view="nav"></ui-view>
<ui-view="map"></ui-view>
<ui-view="about"></ui-view>
</body>
</html>
app.module.js:
(function(){
angular.module('jigup', [
'ui.router'
]);
})();
app.config.js:
(function(){
angular
.module('jigup')
.config(function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/map');
var map = {
name: 'map',
url: '/map',
views: {
nav:{
template: '<a ui-sref="map">map</a><a ui-sref="about">About</a>'
},
map:{
template: 'this is map'
}
}
}
var about = {
name: 'about',
url: '/about',
views: {
nav:{
template: '<a ui-sref="map">map</a><a ui-sref="about">About</a>'
},
map:{
template: 'this is map'
},
about:{
template: 'this is about us'
}
}
}
$stateProvider.state(map);
$stateProvider.state(about);
});
})();
当我导航到我的网站$urlRouterProvider.otherwise('/map');
完成工作并将网址更改为..com/#/map
但我得到空白页面。在检查元素时,我看到了一些奇怪的东西 - ui-views的DOM结构:
<ui-view="nav">
<ui-view="map">
<ui-view="about">
</ui-view="about">
</ui-view="map">
</ui-view="nav">
如果有人能告诉我这是否是预期的DOM结构(因为我强烈怀疑)或者指出我犯了一些错误,我将不胜感激。
答案 0 :(得分:0)
IMO无需在您的情况下堆叠视图。只需为此runnable plnkr demo中的about
创建一个视图即可。这是实现您所要求的简单解决方案。
<div>
<div>
<span style="width:100px" ui-sref="PageTab"><a href="">Home</a></span>
<span style="width:100px" ui-sref=".about"><a href="">About</a></span>
</div>
<ng-include src="'map.html'"></ng-include>
<div>
<div ui-view=""></div>
</div>
</div>
var myApp = angular.module("myApp", ['ui.router']);
myApp.config(function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.when("", "/PageTab");
$stateProvider
.state("PageTab", {
url: "/PageTab",
templateUrl: "mainTemplate.html"
})
.state("PageTab.about", {
url: "/about",
templateUrl: "about.html"
})
});