如何在 ui-router AngularJS 中使用 ui-sref
How to use ui-sref in ui-router AngularJS
我有文件 index.html:
<!DOCTYPE html>
<html>
<head>
<style>
.navbar { border-radius:0; }
</style>
<link rel="stylesheet" type="text/css" href="lib/css/bootstrap.min.css">
<script src="./node_modules/angular/angular.js"></script>
<script src="./node_modules/angular-ui-bootstrap/dist/ui-bootstrap-tpls.js"></script>
<script src="./node_modules/angular-ui-router/release/angular-ui-router.js"></script>
<script src="lib/js/app.js"></script>
</head>
<body ng-app="nav-module">
<a ui-view="home" ui-sref="home" ui-sref-active="active">home</a>
<a ui-view="about" ui-sref="about" ui-sref-active="active">about</a>
<ui-view>
</ui-view>
</body>
</html>
和文件 app.js:
var app = angular.module("nav-module", ["ui.router",'ui.bootstrap']);
app.component('navComponent',{
templateUrl: './navbar.component.html'
});
app.config(['$stateProvider',
'$urlRouterProvider',function($stateProvider,$urlRouterProvider) {
$stateProvider
.state('/home',{
name: 'home page',
url:'/home',
template: '<h3>hello world!</h3>'
})
.state('/about',{
url:'/about',
component: 'navComponent'
});
$urlRouterProvider.otherwise('/home');
}]);
和导航-bar.component.html:
<h1>nav bar</h1>
但我无法点击标记到 运行 页面,当我在 URL 中更改 /about 时,控制台显示错误:
Failed to load template: ./navbar.component.html
我不知道为什么。
我认为您缺少模板网址位置或文件名,因为您提到您的
templateUrl:'./navbar.component.html' 但是你的文件名是nav-bar.component.html。
- 首先删除 templateUrl 并使用模板检查它:
<h1>nav bar</h1>
在组件中。
- 如果没问题,那么你的错误是因为缺少 templateUrl 引用或文件名。
- 然后使用 ../app/navtemplateurl.html 修复此问题,文件名为 navtemplateurl.html,位于 app 文件夹中。
在你的模块中添加'ui.bootstrap.tpls'也可以解决这个问题
更新:必须将索引文件中的角度ui路由器引用更改为<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/1.0.0-rc.1/angular-ui-router.js"></script>
,因为ui-路由器中的组件模板不是v0.4.2 或更早版本支持。
你也需要更新这个。
我有文件 index.html:
<!DOCTYPE html>
<html>
<head>
<style>
.navbar { border-radius:0; }
</style>
<link rel="stylesheet" type="text/css" href="lib/css/bootstrap.min.css">
<script src="./node_modules/angular/angular.js"></script>
<script src="./node_modules/angular-ui-bootstrap/dist/ui-bootstrap-tpls.js"></script>
<script src="./node_modules/angular-ui-router/release/angular-ui-router.js"></script>
<script src="lib/js/app.js"></script>
</head>
<body ng-app="nav-module">
<a ui-view="home" ui-sref="home" ui-sref-active="active">home</a>
<a ui-view="about" ui-sref="about" ui-sref-active="active">about</a>
<ui-view>
</ui-view>
</body>
</html>
和文件 app.js:
var app = angular.module("nav-module", ["ui.router",'ui.bootstrap']);
app.component('navComponent',{
templateUrl: './navbar.component.html'
});
app.config(['$stateProvider',
'$urlRouterProvider',function($stateProvider,$urlRouterProvider) {
$stateProvider
.state('/home',{
name: 'home page',
url:'/home',
template: '<h3>hello world!</h3>'
})
.state('/about',{
url:'/about',
component: 'navComponent'
});
$urlRouterProvider.otherwise('/home');
}]);
和导航-bar.component.html:
<h1>nav bar</h1>
但我无法点击标记到 运行 页面,当我在 URL 中更改 /about 时,控制台显示错误:
Failed to load template: ./navbar.component.html
我不知道为什么。
我认为您缺少模板网址位置或文件名,因为您提到您的 templateUrl:'./navbar.component.html' 但是你的文件名是nav-bar.component.html。
- 首先删除 templateUrl 并使用模板检查它:
<h1>nav bar</h1>
在组件中。 - 如果没问题,那么你的错误是因为缺少 templateUrl 引用或文件名。
- 然后使用 ../app/navtemplateurl.html 修复此问题,文件名为 navtemplateurl.html,位于 app 文件夹中。
在你的模块中添加'ui.bootstrap.tpls'也可以解决这个问题
更新:必须将索引文件中的角度ui路由器引用更改为<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-ui-router/1.0.0-rc.1/angular-ui-router.js"></script>
,因为ui-路由器中的组件模板不是v0.4.2 或更早版本支持。
你也需要更新这个。