2013-07-03 140 views
0

我似乎無法正確連接它。我會列出適當的作品。我的問題是訪問注入的資源。當我嘗試引用它們時,所有依賴項都是不確定的。

var app = angular.module('app', ['ngResource','ui.bootstrap', 'ngGrid','app.services', 'app.directives', 'app.controllers' 
]) 
.config(['$routeProvider', function ($routeProvider) { 
    return $routeProvider. 
     when('/', { templateUrl: 'partials/transaction.view.html', controller: 'TransactionCtrl' }). 
     when('/about', { templateUrl: 'partials/about.view.html', controller: 'AboutCtrl' }). 
     when('/transaction', { templateUrl: 'partials/transaction.view.html', controller: 'TransactionCtrl' }). 
     otherwise({ redirectTo: '/' }); 
}]) 
.config(['$httpProvider', function ($httpProvider) { 
    return $httpProvider.responseInterceptors.push(['logger', '$rootScope', '$q', 
     function (logger, $rootScope, $q) { 
      var error, success; 
      success = function (response) { 
       $rootScope.$broadcast("success:" + response.status, response); 
       logger.log("success:" + response.status); 
       return response; 
      }; 
      error = function (response) { 
       var deferred; 
       deferred = $q.defer(); 
       $rootScope.$broadcast("error:" + response.status, response); 
       logger.log("error:" + response.status); 
       return $q.reject(response); 
      }; 
      return function (promise) { 
       return promise.then(success, error); 
      }; 
     } 
    ]); 
}]) 
.run(['$rootScope', 'logger', function ($rootScope, logger) { 
    return $rootScope.$on('$routeChangeSuccess', function (event, currentRoute, priorRoute) { 
     return $rootScope.$broadcast("" + currentRoute.controller + "$routeChangeSuccess", currentRoute, priorRoute); 
     }); 
}]); 

...控制器在這裏:

angular.module('pennyWatch.controllers', ['$scope', '$location','logger', 'ngGrid',  'transactionService']). 
controller('TransactionCtrl', [function ($scope, logger, ngGrid, transactionService) { 

//code here 

}]). 
controller('AboutCtrl',[function ($scope, logger) { 
    $scope.logEntries = logger.logEntries; 
}]); 

所以沒有我指定的資源可用(所有未定義): '$範圍', '$位置', '記錄', 'ngGrid','transactionService'

任何燈光都將不勝感激!

感謝

+1

可能應用於你正在使用錯誤的語法應該像控制器(「AboutCtrl」,['$範圍','logger',function($ scope,logger){scope = logger.logEntries; }]); –

+0

謝謝@Ajaybeniwal!我改變了控制器的定義以符合建議。看來我已經採取了一些步驟 - 現在TransactionCtrl斷點沒有打。我把所有的代碼放在jsfiddle中(減去視圖)。也許這將有助於查明我的問題。 :-) http://jsfiddle.net/willtx/8jdLh/ –

回答

1

我敢肯定的控制器語法是:

.controller('TransactionCtrl', ['$scope', 'logger', 'ngGrid', 'transactionService', function ($scope, logger, ngGrid, transactionService) { 

//code here 

}]); 

首先列出注入什麼,然後作爲數組的最後一個元素來定義一個帶參數的函數將代表注入的內容。

例如,你甚至可以有:

.controller('TransactionCtrl', ['$scope', 'logger', 'ngGrid', 'transactionService', function ($s, logr, ngGrid, transServ) { 

//code here 

}]); 

這是爲了讓容易縮小。

替代控制器語法在選擇要注入的內容時使用參數名稱。由於縮小通常會縮短變量名稱,因此建議您使用上面的語法。

替代語法:

.controller('TransactionCtrl', function ($scope, logger, ngGrid, transactionService) { 

//code here 

}); 
+0

我有更多的人指出我的定義不正確,但似乎我也有其他問題。感謝您的時間和意見。 –

0

我想你切換模塊加載與服務注入

聲明pennywatch.controllers模塊時,你應該調用angular.module函數傳遞模塊依賴括號,不服務。許多您不能訪問這些服務都是ng模塊中,例如

服務注入在控制器級別