0

Angular 解析 API

API说解决:

key - {string}:要注入控制器的依赖项的名称。

@egghead,有这个主题的视频:

egghead - 角度解析

我不明白的是该关键对象的用途以及为什么上述视频的作者确实将控制器注入到自身中

4

1 回答 1

2

key - {string}:要注入控制器的依赖项的名称。

app.config(function($routeProvider) {
    $routeProvider.
      when('/', {
        controller: 'ListCtrl',
        resolve: {
          myResolve: function(MyService) {
            return MyService();
          }
        },
        templateUrl:'./views/list.html'
  })
});

而不是(在控制器中)

app.controller('MyController',function($scope,MyService){
   $scope.data =  MyService();    
});

如果你使用解决

app.controller('MyController',function($scope,myResolve){
    $scope.data =  myResolve;      
});

更新

一个工作示例

<!doctype html>
 <html ng-app="myModule">
    <head>
        <meta charset="utf-8">

    </head>
    <body>
        <div id="content" data-ng-view=""></div>
        <script src="http://code.angularjs.org/1.0.8/angular.min.js"></script>
        <script>
            var myModule = angular.module('myModule', []);
            myModule.config(function ($routeProvider) {
                $routeProvider
                    .when('/', {
                        templateUrl: './index.html',
                        controller: 'IndexCtrl',
                        resolve: {
                            hello: function(Hello) {
                                return Hello.getMessages();
                            }
                        }
                    })
                    .otherwise({
                        redirectTo: '/'
                });

            });
            myModule.factory('Hello', function($q, $timeout) {
                var getMessages = function() {
                    var deferred = $q.defer();
                    $timeout(function() {
                        deferred.resolve('Hello');

                    }, 1000);

                    return deferred.promise;
                };
                return {
                    getMessages: getMessages
                };
            });
            myModule.controller('IndexCtrl',function($scope,hello){
               $scope.hello =  hello;
            });
        </script>
    </body>
</html>

风景

<p>{{hello}}</p>
于 2013-10-10T12:09:29.080 回答