Page 121 - AngularJS权威教程
P. 121

12.3 路由   101


                  controller: function($scope) {}
                                                                                                     1
                  如果配置对象中设置了controller属性,那么这个指定的控制器会与路由所创建的新作用
              域关联在一起。如果参数值是字符型,会在模块中所有注册过的控制器中查找对应的内容,然后                                             2
              与路由关联在一起。如果参数值是函数型,这个函数会作为模板中DOM元素的控制器并与模板
              进行关联。
                                                                                                     3
                  2. template

                  template: '<div><h2>Route</h2></div>'
                                                                                                     4
                  AngularJS会将配置对象中的HTML模板渲染到对应的具有ng-view指令的DOM元素中。

                  3. templateUrl                                                                     5

                  templateUrl: 'views/template_name.html'
                                                                                                     6
                  应用会根据templateUrl属性所指定的路径通过XHR读取视图(或者从$templateCache中读
              取)。如果能够找到并读取这个模板,AngularJS会将模板的内容渲染到具有ng-view指令的DOM
              元素中。                                                                                   7

                  4. resolve
                                                                                                     8
                  resolve: {
                      'data': ['$http', function($http) {
                          return $http.get('/api').then(                                             9
                              function success(resp) { return response.data; },
                              function error(reason) { return false; }
                          );
                      }];                                                                            10
                  }
                  如果设置了resolve属性,AngularJS会将列表中的元素都注入到控制器中。如果这些依赖是                                   11
              promise对象,它们在控制器加载以及$routeChangeSuccess被触发之前,会被resolve并设置成一
              个值。
                                                                                                     12
                  列表对象可以是:
                   键,键值是会被注入到控制器中的依赖的名字;                                                            13
                   工厂,即可以是一个服务的名字,也可以是一个返回值,它是会被注入到控制器中的函
                     数或可以被resolve的promise对象。
                                                                                                     14
                  在上面的例子中,resolve会发送一个$http请求,并将data的值替换为返回结果的值。列
              表中的键data会被注入到控制器中,所以在控制器中可以使用它。
                                                                                                     15
                  5. redirectTo

                  redirectTo: '/home'                                                                16
                  // 或者
                  redirectTo: function(route,path,search)

                  如果redirectTo属性的值是一个字符串,那么路径会被替换成这个值,并根据这个目标路                                       17
              径触发路由变化。
                  如果redirectTo属性的值是一个函数,那么路径会被替换成函数的返回值,并根据这个目                                       18
   116   117   118   119   120   121   122   123   124   125   126