Page 358 - AngularJS权威教程
P. 358

338  第 25 章  AngularJS 精华扩展


                 要确保你已经全局安装了Bower:

                 $ npm install bower -g
                 然后你就可以使用Bower安装angular-ui库了:

                 $ bower install angular-ui-router --save
                 你还要确保在视图中链接这个库:

                 <scripttype="text/javascript"
                     src="app/bower_components/angular-ui-router/release/angular-ui-router.js"></script>
                 同时还需要将ui.router作为依赖注入到你的应用中:

                 angular.module('myApp', ['ui.router']);
                 现在,不同于内置的ngRoute服务,由于ui-router基于状态工作,而不是简单的url,因此
             你可以将它嵌套在视图中。
                 在处理ngRoute服务时我们不再使用ng-view,而改为使用ui-view指令。

                 在ui-router内处理路由和状态时,我们主要关心的是应用程序处在哪个状态以及Web应用
             当前处在哪个路由位置。

                 <div ng-controller="DemoController">
                     <div ui-view></div>
                 </div>
                 和ngRoute一样,定义在任意给定状态内的模板都处在<div ui-view></div>元素内。此外,
             每个模板都可以包含自己的ui-view。 这事实上就允许你在路由中嵌套视图。

                 为了定义路由,你可以使用.config方法,和常见的方式一样,但不是将路由设置在
             $routeProvider上,而是将状态设置在$stateProvider上。

                 .config(function($stateProvider,$urlRouterProvider) {
                   $stateProvider
                     .state('start', {
                       url: '/start',
                       templateUrl: 'partials/start.html'
                     })
                 });
                 这一步给状态配置对象分配了一个名为start的状态。这个状态配置对象,或者说这个
             stateConfig也有一些与路由配置对象相似的选项,让你能够配置应用程序的状态。

                 1. template、templateUrl、templateProvider
                 在每个视图上设置模板的方式有三种。

                  template:一个HTML内容字符串或者返回HTML的函数。
                  templateUrl:一个模板URL路径字符串或者是返回URL路径字符串的函数。
                  templateProvider:一个返回HTML内容字符串的函数。

                 例如:

                 $stateProvider.state('home',{
   353   354   355   356   357   358   359   360   361   362   363