2017-10-18 92 views
0

即使我根據我的問題閱讀了很多解決方案,仍然有此錯誤。 這是我的控制器:未知提供者: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 –

回答

0

您不能在模塊中注入依賴關係。像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的位置。我該如何解決它? –

0

解決它! 我複製你的控制器與服務注入

.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 }]);

我的意思是我必須包括函數轉換爲[],而不是外部。 無論如何非常感謝你的答覆,因爲他們幫助了我很多。

相關問題