12bet,使用ngRoutes模块可以构建前端路由,将模板分解到视图中,并在布局模板内进行组装
可以在$route
服务的提供者$routeProvider
中通过声明路由来实现
12bet,将ng-view
指令和路由组合到一起,指定当前路由所对应的模板在DOM中的渲染位置,ng-view
给$route
对应的视图内容占位,12博体育,它会创建自己的作用域并将模板嵌套在内部
ng-view是一个优先级为1000的终极指令。AngularJS不会运行同一个元素上的低优先级指令(例如
12bet,元素上其他指令都是没有意义的)。
ngView指令遵循以下规则:
$routeChangeSuccess
事件,视图都会更新。 $viewContentLoaded
事件可以使用AngularJS提供的when()
和otherwise()
两个方法来定义应用的路由。
when方法来添加一个特定的路由,接受两个参数:
$location.path
进行匹配,$location.path
也就是当前URL的路径指定控制器,这个控制器会与路由所创建的新作用域关联在一起,接受两种类型:
将HTML模板渲染到对应的具有ng-view
指令的DOM元素中
根据templateUrl属性所指定的路径通过XHR读取视图(或者从$templateCache
中读取)。如果能够找到并读取这个模板,会将模板的内容渲染到具有ng-view指令的DOM元素中。
如果设置了resolve属性,会将列表中的元素都注入到控制器中。
如果这些依赖是promise对象,它们在控制器加载以及$routeChangeSuccess
被触发之前,会被resolve并设置成一个值。
列表对象可以是:
redirectTo可以接受两种参数:
如果被设置为true(默认),当$location.search()
发生变化时会重新加载路由。
对路由嵌套和原地分页等需求非常有用
如果我们在路由参数的前面加上:
,AngularJS就会把它解析出来并传递给$routeParams
$location
服务对JavaScript中的window.location
对象的API进行了更优雅地封装
$location
服务没有刷新整个页面的能力,需要使用$window.location
对象替代
不同的路由模式在浏览器的地址栏中会以不同的URL格式呈现。$location服务默认会使用标签模式来进行路由
$location
服务通过HTML5历史API让应用能够使用普通的URL路径来路由。当浏览器不支持HTML5历史API时,会自动使用标签模式的URL作为替代方案。
URL路径会以https://www.liuwanlin.info/superlin%e7%9a%84%e8%af%bb%e4%b9%a6%e7%ac%94%e8%ae%b0-52/符号开头
URL看起来和普通的URL一样
用$rootScope
来监听这些事件:
$routeChangeStart
事件$routeChangeSuccess
事件$routeChangeError
事件。$routeUpdate
事件。想重新加载整个页面,需要用$window服务来设置地址: $window.location.href = "/reload/page"