2014-10-26 48 views
0

無法讓多個控制器使用Grunt。 Grunt不是問題,因爲手動組合文件也不起作用。我正在嘗試使用Grunt和單個控制器構建應用程序,每個文件一個用於構建應用程序。帶多個控制器和Grunt的AngularJS錯誤

控制器位於與Grunt組合並縮小的單個文件中。這工作,並且模塊在被縮小之前看起來是正確的。 unminified示例在script.js中。

我得到下面的錯誤: 錯誤:錯誤:unpr 未知提供商

'use strict'; 
angular.module('OntarioDarts', []); 

// Source: app/Modules/Events/EventController.js 
angular.module('OntarioDarts').controller('EventCtrl', function ($scope) { 
    $scope.Events = [ 
     { 
      'Id': 1, 
      'Name': '12th Annual Frank Hanlon Tournament', 
      'Date': 20150117, 
      'Time': 1000, 
      'Image': 'images/Events/FrankHanlon20150128.jpg', 
      'Flyer': '' 
     }, 
     { 
      'Id': 2, 
      'Name': '1st Annual Ken Cadieux Memorial Christmas Tournament', 
      'Date': 20141227, 
      'Time': 1000, 
      'Image': 'images/Events/KenCadieux20141227.jpg', 
      'Flyer': '' 

     }, 
     { 
      'Id': 3, 
      'Name': '8th Annual Presidents Cup Tournament', 
      'Date': 20150313, 
      'Time': 2000, 
      'Image': 'images/Events/PresidentsCup20150314.jpg', 
      'Flyer': '' 
     } 
    ]; 
    $scope.ImageSettings = [{ 'Height': 200, 'Width': 155 }]; 
}); 

// Source: app/Modules/Leagues/LeagueController.js 
angular.module('OntarioDarts').controller('LeagueCtrl', function ($scope) { 
    $scope.Leagues = [ 
     { 'Id': 1, 'Name': 'Dixie Summer Dart League' }, 
     { 'Id': 2, 'Name': 'Etobicoke Pub Dart League' }, 
     { 'Id': 3, 'Name': 'Region of Peel Dart League'} 
    ]; 
}); 

// Source: app/Modules/Schedules/ScheduleController.js 
angular.module('OntarioDarts').controller('ScheduleCtrl', function ($scope) { 
    $scope.Schedules = [ 
     { "Id": 1, "Name": "November 1, 2014" }, 
     { "Id": 2, "Name": "November 5, 2014" } 
    ]; 
}); 

// Source: app/Modules/Teams/TeamController.js 
angular.module('OntarioDarts').controller('TeamCtrl', function ($scope) { 
    $scope.Teams = [ 
     { 'Id': 1, 'Name': 'Team 1' }, 
     { 'Id': 2, 'Name': 'Team 2' } 
    ]; 
}); 

//# sourceMappingURL=OntarioDarts.js.map 

Plunker

+0

當你說'手動合併文件'時它不起作用,是否包括縮小?通常情況下,您需要使用angular的內聯註釋或使用角度感知的minifier來進行依賴注入。 – aidanok 2014-10-26 15:17:05

+0

對不起,問題出在控制器上沒有數組符號(請參見下面的答案)。當我把它放在一個文件中時,它工作正常(類似於教程),所以我誤以爲是由於分裂然後合併。 – 2014-10-26 18:40:16

回答

1

我只是發現在plunker該文件名是的script.js而不是scripts.js中。在html中引用錯誤。

請考慮這當您壓縮

以下是編寫縮小

angular.module('OntarioDarts').controller('EventCtrl', ['$scope', function ($scope) { 
    //controller code goes here 
}]); 

你必須使用陣列符號來表示你的控制器功能是可以理解$範圍最安全的方式。

['$scope', function ($scope) { 
    //controller code goes here 
}] 
+0

對不起,腳本是來自plunker界面的拼寫錯誤,我使用的是內置文件,而不是我的代碼。數組符號糾正了我的問題。謝謝。 – 2014-10-26 18:38:40

+0

我很高興,我可以幫忙。 – PSK 2014-10-28 17:49:41