AngularJS 路由允许我们通过不同的 URL 访问不同的内容。
通过 AngularJS 可以实现多视图的单页Web应用(single page web application,SPA)。
通常我们的URL形式为 http://runoob.com/first/page,但在单页Web应用中 AngularJS 通过 # + 标记 实现,例如:
http://runoob.com/#/first
http://runoob.com/#/second
http://runoob.com/#/third
先看看$routeProvider 的配置对象属性方法:
路由设置对象解析:
$routeProvider.when(url(路由名称), {
template: string(模板提示字符串),
templateUrl: string(模板路径URL),
controller: string, function 或 array(在当前模板创建控制器,生成新的 $scope 作用域),
controllerAs: string(控制器别名),
redirectTo: string, function(重定向地址),
resolve: object<key, function>(当前路由所依赖的模块)
});
实现路由的大致步骤:
第一步:导入ngRoute模块
<script type=\"text/javascript\" src=\"js/angular-route.min.js\"></script>
第二步:在应用模块中使用ngRoute
angular.module(\"routeApp\", [\"ngRoute\"])
第三步:使用 ng-view 指令
<div ng-view class=\"well\" ng-controller=\'defaultCtrl\'></div>
第四步:配置 $routeProvider 路由规则
...
.config([\'$routeProvider\', function ($routeProvider){
$routeProvider
.when(\'/home\', {
templateUrl : \'home.tpl.html\',
controller : \'HomeCtrl\',
})
.when(\'/computer\', {
templateUrl : \'computer.html\',
})
.when(\'/phone\', {
templateUrl : \'phone.html\',
})
.when(\'/other\', {
templateUrl : \'other.tpl.html\',
controller : \'OtherCtrl\',
})
}])
...
第五步:通过超链接使用路由
<ul class=\"nav nav-tabs\"> <li><a href=\"#/home\">首页</a></li> <li><a href=\"#/computer\">电脑</a></li> <li><a href=\"#/phone\">手机</a></li> <li><a href=\"#/other\">其他</a></li> </ul>
完整案例:
1 route.html页面
<html>
<head>
<meta charset=\"utf-8\">
<title>AngularJS 路由实例</title>
<link rel=\"stylesheet\" type=\"text/css\" href=\"css/bootstrap.min.css\">
</head>
<body ng-app=\'routeApp\'>
<ul class=\"nav nav-tabs\">
<li><a href=\"#/home\">首页</a></li>
<li><a href=\"#/computer\">电脑</a></li>
<li><a href=\"#/phone\">手机</a></li>
<li><a href=\"#/other\">其他</a></li>
</ul>
<div ng-view class=\"well\" ng-controller=\'defaultCtrl\'></div>
<script type=\"text/javascript\" src=\"js/jquery.min.js\"></script>
<script type=\"text/javascript\" src=\"js/bootstrap.min.js\"></script>
<script type=\"text/javascript\" src=\"js/angular.min.js\"></script>
<script type=\"text/javascript\" src=\"js/angular-route.min.js\"></script>
<script type=\"text/ng-template\" id=\"home.tpl.html\">
<h1>{{data}}</h1>
</script>
<script type=\"text/ng-template\" id=\"other.tpl.html\">
<h1>{{data}}</h1>
</script>
<script type=\"text/javascript\">
angular.module(\"routeApp\", [\"ngRoute\"])
.config([\'$routeProvider\', function ($routeProvider){
$routeProvider
.when(\'/home\', {
templateUrl : \'home.tpl.html\',
controller : \'HomeCtrl\',
})
.when(\'/computer\', {
templateUrl : \'computer.html\',
})
.when(\'/phone\', {
templateUrl : \'phone.html\',
})
.when(\'/other\', {
templateUrl : \'other.tpl.html\',
controller : \'OtherCtrl\',
})
}])
.controller(\'defaultCtrl\', function ($scope) {
$scope.computers = [
{ id: 0, name: \"宏基\", category: \"Test\", price: 1.25 },
{ id: 1, name: \"联想\", category: \"Test\", price: 2.45 },
{ id: 2, name: \"苹果\", category: \"Test\", price: 4.25 }
];
$scope.phones = [
{ id: 0, name: \"三星\", category: \"Test\", price: 1.25 },
{ id: 1, name: \"荣耀\", category: \"Test\", price: 2.45 },
{ id: 2, name: \"魅族\", category: \"Test\", price: 4.25 }
];
})
.controller(\"HomeCtrl\", function ($scope, $route) {
$scope.$route = $route;
$scope.data = \"Home Home\";
})
.controller(\"OtherCtrl\", function ($scope, $route) {
$scope.$route = $route;
$scope.data = \"Other Other\";
})
</script>
</body>
</html>
2.computer.html 页面
<div class=\"panel-body\">
<table class=\"table table-striped table-hover\">
<thead>
<tr>
<th>名称</th>
<th>类别</th>
<th class=\"text-right\">价格</th>
<th>{{data}}</th>
</tr>
</thead>
<tbody>
<tr ng-repeat=\"item in computers\">
<td>{{item.name}}</td>
<td>{{item.category}}</td>
<td class=\"text-right\">{{item.price | currency}}</td>
<td class=\"text-center\">
<button class=\"btn btn-xs btn-primary\" ng-click=\"deleteProduct(item)\">删除</button>
<a href=\"/edit/{{item.id}}\" class=\"btn btn-xs btn-primary\" ng-click=\"editOrCreateProduct(item)\">编辑</a>
<button class=\"btn btn-xs btn-primary\" ng-click=\"incrementPrice(item)\">+</button>
</td>
</tr>
</tbody>
</table>
<div>
<button class=\"btn btn-xs btn-primary\" ng-click=\"editOrCreateProduct()\">添加</button>
<a href=\"create\" class=\"btn btn-xs btn-primary\" ng-click=\"editOrCreateProduct()\">Add</a>
</div>
</div>
3.phone.html 页面
<div class=\"panel-body\">
<table class=\"table table-striped table-hover\">
<thead>
<tr>
<th>名称</th>
<th>类别</th>
<th class=\"text-right\">价格</th>
<th>{{data}}</th>
</tr>
</thead>
<tbody>
<tr ng-repeat=\"item in phones\">
<td>{{item.name}}</td>
<td>{{item.category}}</td>
<td class=\"text-right\">{{item.price | currency}}</td>
<td class=\"text-center\">
<button class=\"btn btn-xs btn-primary\" ng-click=\"deleteProduct(item)\">删除</button>
<a href=\"/edit/{{item.id}}\" class=\"btn btn-xs btn-primary\" ng-click=\"editOrCreateProduct(item)\">编辑</a>
<button class=\"btn btn-xs btn-primary\" ng-click=\"incrementPrice(item)\">+</button>
</td>
</tr>
</tbody>
</table>
<div>
<button class=\"btn btn-xs btn-primary\" ng-click=\"editOrCreateProduct()\">添加</button>
<a href=\"create\" class=\"btn btn-xs btn-primary\" ng-click=\"editOrCreateProduct()\">Add</a>
</div>
</div>
单击“首页”
单击“电脑”
单击“手机”
单击“其他”
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持phpstudy。
本文地址:https://www.stayed.cn/item/12188
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我