路由($route)这个东西(也许可以加上$location)可以说是ng最重要的东西了,因为angular目前最重要的作用就是做单页面webApp,而路由这个东西是能做到页面跳转的关键。
一.单页面webApp
为什么叫单页面webApp?因为它是单页面的。额,关键在于我们看到的不少webApp是多页面的啊,可以从一页跳到另一页。嗯,看起来是这样,不过实际上这几页实际还是一个页面,因为它们是一次性加载进来的,至于为啥会有跳转效果呢?嗯,有点儿像选项卡,嗯。其实现原理在html5之前是通过hashbang,H5是History。这篇文章主要讨论的是hashbang。为什么要用#呢?当然我们可以直接多页面,就跟做网站一样。但是这么做最大的问题是:每次切换都需要重新加载页面。我们可以接受进入一个app的时候多花几秒加载,而在使用App的时候切换页面的时候多等个一两秒就会给用户一种这app好卡的感觉。
另外webApp另外一个好处就是可以减轻服务器压力,后台只管给数据。嗯,其实我不是很懂这一点。。以后再补充吧。
二.路由(ng-route)
那么怎么把单页面webapp(SPA)做成多页面的样子呢?就是怎么来管理这些页面呢?就要靠路由了。
来个案例,这是一个信息管理系统,管用户注册,注销,用户列表,用户详情之类的东西。
<!DOCTYPE html> <html lang="en" ng-controller="userlist"> <head> <meta charset="UTF-8"> </head> <body> <div> <table> <tr ng-repeat="x in data" ng-click="detail($index)"> <td>{{ x.name }}:{{ x.password }}<a href="#ddd/{{$index}}">查看详情</a></td> </tr> </table> </div> </body> </html>
html我就粘一部分,这一部分是显示用户列表的,点击对应用户需要显示它们的对应信息。为什么选这一部分,是因为这里需要做地址传参。
再看看对应的管路由跳转的js代码
m1.config(["$routeProvider",function($routeProvider){ $routeProvider.when("/aaa",{ templateUrl:"register.html", controller:"register" }).when("/bbb",{ templateUrl:"cancel.html", controller:"cancel" }).when("/ccc",{ templateUrl:"userlist.html", controller:"userlist" }) .when("/ddd/:index",{ templateUrl:"detail.html", controller:"detail" }) .otherwise({redirectTo:"/aaa"}); }])
其中
.when("/ddd/:index",{ templateUrl:"detail.html", controller:"detail" })
对应着用户列表页面。
首先,m1.config(["$routeProvider",function($routeProvider)])是注入模块的过程,因为ng-route是一个独立于ng之外的模块,是一个独立的js文件。
然后,when函数的参数,第一个是url地址(后面接的:index待会讲地址传参的时候再说)。templateUrl是转到的页面地址(内容少的话可以用template),controller写跳转到的页面的控制器。
跳转之后的页面url大概是长这样的:http://localhost:63342/%E8%B7%AF%E7%94%B1/index.html#/ddd
最后说说地址传参的问题,在详细页中,我们只需要显示对应的一个人的信息,就是说不管你点谁的详情显示的一个页面,但是你需要告诉详情页点击的究竟是哪个按钮,我该渲染哪个。代码里的:index代表着你点击的用户的列表索引(就是你点击的是第几个用户),传索引是因为用户信息数据是用数组存的。在列表页中,这个变量叫index或者啥的都无所谓,因为这只是占了个坑,代表这里传的值可以用这个变量来取(当然这个名字在跳转过去的详情页是有用的)。
再看看对应的html怎么写的:
<tr ng-repeat="x in data" ng-click="detail($index)"> <td>{{ x.name }}:{{ x.password }}<a href="#ddd/{{$index}}">查看详情</a></td> </tr>
这里的$index对应的就是点击的这个tr在这个表格中的索引,确切的来说是x是data中的第几项。index就对应了{{$index}}。
如果加上了参数的话,跳转页的url长这样:http://localhost:63342/%E8%B7%AF%E7%94%B1/index.html#/ddd/0
后面多加的这个0就是传的参数了,想要在跳转页取到这个参数,可以用$routeParams
m1.controller("detail",["$scope","$routeParams",function($scope,$routeParams){ $scope.index=$routeParams.index; }]);
就是说,这里$routeParams.index中的index对应着在when函数中写的那个。
说句题外话,之前我不用地址传参的时候,实现”多页面"通信的方式是在$rootScope里写个属性存上要传的数据,毕竟ng只有一个$rootScope。虽然没想出这么做有什么不妥,但是内心当中总觉得好别扭。
相关推荐
cas-server-webapp-session-redis-3.2.4.jar
cas服务器war包,用于搭建cas认证服务器,由于国内网的原因,下载老是超时,故此提供给,cas-server-webapp-tomcat-5.3.14
项目名称 camunda BPM - webapp - webjar 项目主页 隶属组织 开源协议 仓库 Central 类库 camunda BPM - webapp - webjar 标签 javabpmnworkflowdmnbpmprocess-enginecamunda-bpm-platformcamunda-enginecmmn
标题中的"nexus-oss-webapp-2.3.1-01-bundle"指的是Nexus OSS的一个特定版本,即2.3.1-01。这个版本包含了Web应用程序的所有必需文件,可以作为一个完整的服务器实例进行部署。"bundle"一词通常意味着这个包包含了...
cas-server-webapp-tomcat-5.2.2.war
1. **标准目录结构**:该archetype会按照Java Web项目的标准目录结构创建项目,如`src/main/java`用于存放Java源代码,`src/main/webapp`用于存放Web应用相关的静态资源和JSP页面,`src/main/resources`则用于存放...
cas-server-webapp-tomcat-5.3.16.war maven依赖包
《webapp-with-golang-anti-textbook》是一本旨在教会新手如何使用Go语言进行Web应用开发的指南书籍。本书通过一系列简单而真实的示例来教授核心概念,而不是通过抽象的理论或虚构的例子。在阅读本书的过程中,读者...
CAS(Central Authentication Service) 是 Yale 大学发起的一个开源项目,据统计,大概每 10 个采用开源构建 Web SSO 的 Java 项目,就有 8 个使用 CAS 。
为了下次能快速的下载这个war包,留份以备下次使用。
maven-webapp-plugin-1.4.0-incubating-sources.jar
Python Flask Blog WebApp End-to-End Project With Deployment.
cas-server-webapp-tomcat-5.2.1.war cas-server-webapp-tomcat-5.2.1.war
单点登录 sso cas带超详细文档,包含(cas-server-webapp-4.0.0.war、c3p0-0.9.1.2.jar、cas-client-core-3.3.3.jar、cas-server-support-jdbc-4.0.0.jar、cas-server-webapp-support-4.0.0.jar、commons-logging-...
在描述中,同样提到了“nexus-oss-webapp-1.7.2-bundle”,这表明提供的内容是一个完整的捆绑包,包含了运行Nexus OSS所需的所有组件,包括Web应用程序本身和其他必要的配置文件、库和脚本。 “nexus-oss-webapp-...
总之,Nexus-webapp-1.9.2.4是Nexus仓库管理器的一个版本,它的WAR文件是部署在Web服务器上的关键组件,通过它可以实现对软件依赖的高效管理和分发,对于Java开发团队来说,是一个不可或缺的工具。
cas服务器war包,用于搭建cas认证服务器,由于国内网的原因,下载老是超时,故此提供给各位码农
在本案例中,我们将探讨如何使用`cas-server-webapp-4.0.0`来实现单点登录功能,并将其部署到Tomcat服务器上。 1. **CAS(Central Authentication Service)**:CAS 是一个开源的身份验证协议,由耶鲁大学开发并...
标签:arquillian-tomee-webapp-remote-1.6.0-javadoc.jar,arquillian,tomee,webapp,remote,1.6.0,javadoc,jar包下载,依赖包
cas-server-webapp-4.2.4 cas-server-webapp-4.2.4-.war