未知提供者:DashboardServiceProvider < - DashboardService < - DashboardController

未知提供者:DashboardServiceProvider < - DashboardService < - DashboardController

问题描述:

即使我根据我的问题阅读了很多解决方案,仍然有此错误。 这是我的控制器:未知提供者:DashboardServiceProvider < - DashboardService < - DashboardController

@Controller 
 
@RequestMapping("/dashboard") 
 
public class DashboardController { 
 

 
\t @RequestMapping(value = "", method = RequestMethod.GET) 
 
\t public HttpEntity<String> dashboard() { 
 
\t \t SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); \t 
 
\t \t return new HttpEntity<String>("Today is " + sdf.format(new Date())); 
 
\t } 
 
\t 
 
}

这是我的index.jsp

<body ng-app="dashboard"> 
 
\t 
 
\t <div ng-controller="DashboardController"> 
 
\t  <p>Nome: <input type="text" ng-model="nome"></p> 
 
\t  <p>Cognome: <input type="text" ng-model="cognome"></p> 
 
\t  <input type="button" value="LOGIN" ng-click="login()"/> 
 
\t </div> 
 
\t 
 
\t <jsp:include page="includes.jsp"></jsp:include> 
 
\t 
 
\t <div ng-show="value==1"> 
 
\t \t {{data}} 
 
\t </div> 
 
\t <div ng-show="value==0"> 
 
\t \t {{ResponseDetails}} 
 
\t </div> 
 
\t 
 
\t 
 
</body>

这是我的模块

var Dashboard = angular.module('dashboard', ['DashboardService']) 
 
\t .config(['$routeProvider', '$locationProvider', 
 
\t \t function ($routeProvider, $locationProvider) { 
 
\t \t \t $locationProvider.html5Mode(true); 
 
\t 
 
\t \t \t $routeProvider.when('/dashboard', { 
 
\t \t \t \t templateUrl: '/WEB-INF/pages/dashboard.jsp', 
 
\t \t \t \t controller: 'DashboardController' 
 
\t \t \t }); 
 
\t \t }]);

我的服务

Dashboard.factory('DashboardService', function ($http) { 
 

 
    return { 
 
     dashboard: function(successCallback, errorCallback) { 
 
\t \t  $http.get("/dashboard") 
 
\t \t \t  .success(
 
\t \t \t \t  function (response) { 
 
\t \t \t \t \t  $scope.data = response; 
 
\t \t \t \t  } 
 
\t \t \t ).error(
 
\t \t \t  function (response) { 
 
\t \t \t  \t $scope.data = "ERROR!"; 
 
\t \t \t  } 
 
\t \t ) 
 
\t  } 
 
    } 
 
});

最后我控制器

angular.module("dashboard", []) 
 
\t .controller('DashboardController', function ($scope, DashboardService) { 
 
\t \t $scope.nome = "Daniele"; 
 
\t \t $scope.cognome = "Comandini"; 
 
\t \t 
 
\t \t var data = { 
 
\t \t \t nome: $scope.nome, 
 
\t \t \t cognome: $scope.cognome 
 
\t \t }; 
 
\t \t 
 
\t \t $scope.value = 0; 
 
\t \t 
 
\t \t var login = function() { 
 
\t \t \t alert("LOGIN ON DASHBOARD"); 
 
\t \t \t \t   
 
\t \t \t DashboardService.dashboard(); 
 
\t \t }; 
 
\t \t 
 
\t \t $scope.login = login; 
 
\t \t \t 
 
\t });

我的JSP页面只能将请求发送到DashBoardcontroller,它已经返回带有当前日期的页面dashboard.jsp。

谢谢。

+0

对不起,我忘了问题:当我加载index.jsp时,我在控制台上看到以下错误: –

+0

错误:[$ injector:unpr] http://errors.angularjs.org/1.3.14/$ injector/unpr?p0 = DashboardServiceProvider%20%3C-%20DashboardService%20%3C-%20DashboardController –

您不能在模块中注入依赖关系。像service,factory这样的依赖关系必须注入到控制器中。顺便说一下,不要忘记注入ngRoute

模块变为:

var Dashboard = angular.module('dashboard', ['ngRoute']) 
    .config(['$routeProvider', '$locationProvider', 
     function ($routeProvider, $locationProvider) { 
      $locationProvider.html5Mode(true); 

      $routeProvider.when('/dashboard', { 
       templateUrl: '/WEB-INF/pages/dashboard.jsp', 
       controller: 'DashboardController' 
      }); 
     }]); 

控制器代码是好的,只是一两件事:如果你想使用一个代码编译像咕噜咕嘟咕嘟的WebPack,不要忘了添加您的依赖作为字符串:

angular.module('dashboard') 
    .controller('DashboardController', ['$scope', 'DashboardService'], function ($scope, DashboardService) { 
+0

感谢您的建议。 –

+0

欢迎!它解决了你的问题吗? – Zooly

+0

现在我有另一个错误,错误:$ injector:modulerr 模块错误,并阅读它给我的链接,它从版本1.2.x谈到ng-route成为一个单独的模块,我必须导入。我做到了,我有一个文件includes.jsp,其中我指定了angular.min.js和angular-route.min.js的位置。我该如何解决它? –

解决它! 我复制你的控制器与服务注入

.controller('DashboardController', ['$scope', 'DashboardService'], function ($scope, DashboardService) {

但最终我不得不写这

Dashboard.controller('DashboardController', ['$scope', 'DashboardService' , function ($scope, DashboardService) { 
 
\t \t $scope.nome = "Daniele"; 
 
\t \t $scope.cognome = "Comandini"; 
 
\t \t 
 
\t \t var data = { 
 
\t \t \t nome: $scope.nome, 
 
\t \t \t cognome: $scope.cognome 
 
\t \t }; 
 
\t \t 
 
\t \t $scope.value = 0; 
 
\t \t 
 
\t \t var login = function() { 
 
\t \t \t alert("LOGIN ON DASHBOARD"); 
 
\t \t \t \t   
 
\t \t \t DashboardService.dashboard(); 
 
\t \t }; 
 
\t \t 
 
\t \t $scope.login = login; 
 
\t \t \t 
 
\t }]);

我的意思是我必须包括函数转换为[],而不是外部。 无论如何非常感谢你的答复,因为他们帮助了我很多。