angularJs---route
routeroute---‘路由’? ajax的弊端: 1.ajax请求不会留下history记录 2.用户无法直接通过url进入应用中的指定页面(保存书签,分享朋友?) 3.ajax不利于SEO
前端路由的实现原理是什么? #哈希 也叫锚点,通过使用锚点实现页面刷新但不跳转。 html5中的history API route可以说是angular的一大重点。 route可以实现局部页面无刷新跳转(相当于页面里嵌套了页面) ng官方提供了一套路由 ng-route
1.引入外部文件:angular-route.js ? 2.把ngRoute模块注入到主模块 ?3.使用config函数 注入$routeProvider服务 ?4.在需要载入页面的地方 加上ng-view $routeProvider的方法: when(‘url’,{//code}) 该对象的属性有template/templateUrl--文件地址 ? controller:‘控制器名称’ ? url表示拼接在网址后头 ? ?#!url otherwise({//code}) 该方法表示默认的页面 ,接收一个对象,该对象有个属性redirectTo ?表示从重定向 需要注意的是:当设置了controller选项时,主控制器就不能用在 标签含有属性ng-view里面了。
index
home
<span style="color: #0000ff"></ <span style="color: #800000">body<span style="color: #0000ff">><span style="color: #0000ff"><<span style="color: #800000">script <span style="color: #ff0000">src<span style="color: #0000ff">="./js/angular.js"<span style="color: #0000ff">></<span style="color: #800000">script<span style="color: #0000ff">> <span style="color: #0000ff"><<span style="color: #800000">script <span style="color: #ff0000">src<span style="color: #0000ff">="./js/angular-route.js"<span style="color: #0000ff">></<span style="color: #800000">script<span style="color: #0000ff">> <span style="color: #0000ff"><<span style="color: #800000">script<span style="color: #0000ff">> <span style="background-color: #f5f5f5; color: #0000ff">var<span style="background-color: #f5f5f5; color: #000000"> app <span style="background-color: #f5f5f5; color: #000000">=<span style="background-color: #f5f5f5; color: #000000"> angular.module(<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">app<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,[<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">ngRoute<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">]); app.controller(<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">myCtrl<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,<span style="background-color: #f5f5f5; color: #0000ff">function<span style="background-color: #f5f5f5; color: #000000">($scope){ $scope.name <span style="background-color: #f5f5f5; color: #000000">= <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">dk<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">; }) app.config(<span style="background-color: #f5f5f5; color: #0000ff">function<span style="background-color: #f5f5f5; color: #000000">($routeProvider){ $routeProvider.when(<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">/index<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,{ templateUrl:<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">./temp/index.html<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,controller: <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">indexCtrl<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000"> }).when(<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">/home<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,{ templateUrl: <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">./temp/home.html<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000"> }).otherwise(<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">/index<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,controller: <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">indexCtrl<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000"> }) }); app.controller(<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">indexCtrl<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,<span style="background-color: #f5f5f5; color: #0000ff">function<span style="background-color: #f5f5f5; color: #000000">($scope){ $scope.name <span style="background-color: #f5f5f5; color: #000000">= <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">jjk<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000"> }) <span style="color: #0000ff"></<span style="color: #800000">script<span style="color: #0000ff">>
在chrome中显示:
从外部引入angular-route.js 但无法进行深层次嵌套,这时,可以选用第3方插件:angular-ui-route.js 用ng制作的spa(单页面应用)经常有路由嵌套、路由平行的情况 第一种情况:页面嵌套
index
<span style="color: #0000ff"></ <span style="color: #800000">body<span style="color: #0000ff">><span style="color: #0000ff"><<span style="color: #800000">script <span style="color: #ff0000">src<span style="color: #0000ff">="./js/angular.js"<span style="color: #0000ff">></<span style="color: #800000">script<span style="color: #0000ff">> <span style="color: #0000ff"><<span style="color: #800000">script <span style="color: #ff0000">src<span style="color: #0000ff">="./js/angular-ui-router.js"<span style="color: #0000ff">></<span style="color: #800000">script<span style="color: #0000ff">> <span style="color: #0000ff"><<span style="color: #800000">script<span style="color: #0000ff">> <span style="background-color: #f5f5f5; color: #0000ff">var<span style="background-color: #f5f5f5; color: #000000"> app <span style="background-color: #f5f5f5; color: #000000">=<span style="background-color: #f5f5f5; color: #000000"> angular.module(<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">app<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,[<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">ui.router<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">]); app.controller(<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">myCtrl<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,<span style="background-color: #f5f5f5; color: #0000ff">function<span style="background-color: #f5f5f5; color: #000000">($scope){ $scope.name <span style="background-color: #f5f5f5; color: #000000">= <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">dk<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">; }) app.config(<span style="background-color: #f5f5f5; color: #0000ff">function<span style="background-color: #f5f5f5; color: #000000">($stateProvider,$urlRouterProvider) { $urlRouterProvider.when(<span style="background-color: #f5f5f5; color: #000000">''<span style="background-color: #f5f5f5; color: #000000">,<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">/index<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">); $stateProvider.state(<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">index<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,{ url:<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">/index<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,templateUrl:<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">./temp/index.html<span style="background-color: #f5f5f5; color: #000000">' <span style="background-color: #f5f5f5; color: #008000">//<span style="background-color: #f5f5f5; color: #008000"> controller: 'indexCtrl' <span style="background-color: #f5f5f5; color: #000000"> }) .state(<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">index.page1<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,{ url: <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">/page1<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,templateUrl: <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">./temp/page1.html<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">
<span style="color: #0000ff"></<span style="color: #800000">script<span style="color: #0000ff">> 上面的代码中: $urlRouterProvider.when('','/index'); 表示默认页面 url 表示在当前网址的基础上加上url 同样可以有controller选项。在chrome中显示: 第2种情况:多个ui-view存在同一个页面,互为平行关系。 body部分:
index
home
<span style="color: #0000ff"></ <span style="color: #800000">body<span style="color: #0000ff">><span style="color: #0000ff"><<span style="color: #800000">script <span style="color: #ff0000">src<span style="color: #0000ff">="./js/angular.js"<span style="color: #0000ff">></<span style="color: #800000">script<span style="color: #0000ff">> <span style="color: #0000ff"><<span style="color: #800000">script <span style="color: #ff0000">src<span style="color: #0000ff">="./js/angular-ui-router.js"<span style="color: #0000ff">></<span style="color: #800000">script<span style="color: #0000ff">> <span style="color: #0000ff"><<span style="color: #800000">script<span style="color: #0000ff">> <span style="background-color: #f5f5f5; color: #0000ff">var<span style="background-color: #f5f5f5; color: #000000"> app <span style="background-color: #f5f5f5; color: #000000">=<span style="background-color: #f5f5f5; color: #000000"> angular.module(<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">demo<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,[<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">ui.router<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">]); app.config(<span style="background-color: #f5f5f5; color: #0000ff">function<span style="background-color: #f5f5f5; color: #000000"> ($stateProvider,$urlRouterProvider) { $stateProvider.state(<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">index<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,{ url: <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">/index<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,views: { <span style="background-color: #f5f5f5; color: #000000">"<span style="background-color: #f5f5f5; color: #000000">view1<span style="background-color: #f5f5f5; color: #000000">"<span style="background-color: #f5f5f5; color: #000000">: { template: <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000"> index first <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">},<span style="background-color: #f5f5f5; color: #000000">"<span style="background-color: #f5f5f5; color: #000000">view2<span style="background-color: #f5f5f5; color: #000000">"<span style="background-color: #f5f5f5; color: #000000">: { template: <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000"> index second <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">},<span style="background-color: #f5f5f5; color: #000000">"<span style="background-color: #f5f5f5; color: #000000">view3<span style="background-color: #f5f5f5; color: #000000">"<span style="background-color: #f5f5f5; color: #000000">:{ template:<span style="background-color: #f5f5f5; color: #000000">"<span style="background-color: #f5f5f5; color: #000000"> three <span style="background-color: #f5f5f5; color: #000000">"<span style="background-color: #f5f5f5; color: #000000">} } }) .state(<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">home<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,{ url: <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">/home<span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">,views: { <span style="background-color: #f5f5f5; color: #000000">"<span style="background-color: #f5f5f5; color: #000000">view1<span style="background-color: #f5f5f5; color: #000000">"<span style="background-color: #f5f5f5; color: #000000">: { template: <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000"> home first <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">},<span style="background-color: #f5f5f5; color: #000000">"<span style="background-color: #f5f5f5; color: #000000">view2<span style="background-color: #f5f5f5; color: #000000">"<span style="background-color: #f5f5f5; color: #000000">: { template: <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000"> home second <span style="background-color: #f5f5f5; color: #000000">'<span style="background-color: #f5f5f5; color: #000000">} } }) }) <span style="color: #0000ff"></<span style="color: #800000">script<span style="color: #0000ff">> <span style="color: #0000ff"></<span style="color: #800000">html<span style="color: #0000ff">> 在chrome中显示: 路由传参:在我们平时做的页面跳转都会传参,如:https://i.cnblogs.com/EditPosts.aspx?postid=6556246&update=1,?postid=6556246&update=1就是参数。那路由又是如何实现传参的呢? 在 一般在a标签里 实现路由跳转 ?有2种写法: 1. ? hot为参数 2. 使用ui-sref ? ?? ? index表示 路由的名字 ? ({id:hot})表示参数
$stateChangeStart?'、'?
app = angular.module('app',['ui.router','routers','directives','controllers','ionic'
'$rootScope','$http', $rootScope.$on('$stateChangeSuccess', (toState.name = 'home.list'
$http({
url: </span>"https://cnodejs.org/api/v1/topics"<span style="color: #000000">,method: </span>'GET'<span style="color: #000000">,params: {
limit: </span>10<span style="color: #000000">,page: </span>1<span style="color: #000000">,tab: toParams.id
}
}).then(</span><span style="color: #0000ff">function</span><span style="color: #000000"> (res) {
</span><span style="color: #008000">//</span><span style="color: #008000"> console.log(res.data);</span>
<span style="color: #0000ff">if</span><span style="color: #000000"> (res.data.success) {
$rootScope.news </span>=<span style="color: #000000"> res.data.data;
console.log($rootScope.news);
}
})
}
}
)
}]) 注入$rootScope服务,监听$stateChangeSuccess $rootScope.$on('$stateChangeSuccess',function (event,fromParams){//code}
?
请使用手机"扫一扫"x (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |