AngularJS,$ routeProvider并解决:Hello World示例不起作用

ps0604

我想放在一起的Hello World示例$routeProvider使用resolve将数据提供给控制器。这是the ; 我得到的错误Unknown provider: greetingService是在控制器和配置之前声明了工厂。此代码有什么问题?

index.html:

<body ng-controller="mainCtrl">

   <a href='#option1'>click me to show Hello World</a>

   <br/><br/>

   {{message}}

   <br/><br/>

   *****

   <div ng-view></div> 

   *****


</body>

template.html:

<div ng-controller="templateCtrl">
   {{hello}}
</div

app.js:

angular.module('app', ['ngRoute']);


angular.module('app')
.factory("greetingService", function($q, $timeout){
   return {
       getGreeting: function(){
           var deferred = $q.defer();
           $timeout(function(){
               deferred.resolve("Hello");
           },1000);
           return deferred.promise;
       }
   };
});


angular.module('app')
.controller('mainCtrl', function($scope) {

     $scope.message = "Message in the main controller";
});

angular.module('app')
.controller('templateCtrl', function($scope,greeting) {

    $scope.hello = greeting + " World";

});

angular.module('app')
.config(function($routeProvider,greetingService) {

    $routeProvider.
      when('/option1', {

        templateUrl: 'template.html',
        controller: 'templateCtrl',
        resolve: {
            greeting: function(greetingService){
                return greetingService.getGreeting();
            }
        }

      });
  });
mcranston18

这是因为您正在注入greetingServicemain app.config删除该行,它将起作用:

http://plnkr.co/edit/GRqZQrEvKa6dntx39qOu?p=preview

您只能将提供程序注入实例配置块(即$ locationProvider,$ routeProvider)中。您可以将实例注入到.run应用程序块中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章