У меня есть файл objectFactory.js:
(function () {
var objectiveFactory = function ($http, $ngAnimate) {
debugger;
return {
getObjectives: function () {
return $http.get('/api/Objective/');
}
};
};
debugger;
try {
//objectiveFactory.$inject = ['$http', '$ngAnimate'];// not working
objectiveFactory.$inject = ['$http'];// perfectly works!
angular.module('app', []).factory('objectiveFactory', objectiveFactory);
}
catch (e)
{
var e1 = e;
}
}());
Это действительно странно, однако, если я добавлю новую зависимость ngAnimate
:
objectiveFactory.$inject = ['$http', '$ngAnimate'];// not working
Тогда у меня есть ошибка:
angular.js: 13920 Ошибка: [$ injector: unpr] Неизвестный поставщик: ngAnimateProvider <- ngAnimate <- objectFactory http://errors.angularjs.org/1.5.8/ $ инжектор /unpr? p0 = ngAnimateProvider %20% [CN10 ] %20ngAnimate %20% 3C- %20objectiveFactory на angular.js: 68 at angular.js: 4511 at Object.getService [as get] (angular.js: 4664) на угловой.js: 4516 at getService (angular.js: 4664) при инъекцииArgs (angular.js: 4688) в Object.invoke(angular.js: 4710) в Object.enforcedReturnValue [as $ get] (angular.js: 4557) в Object.invoke(angular.js: 4718) at angular.js: 4517
Но '$http'
injecion отлично работает.
Я изучил много информации и дважды проверял следующие рекомендации в своем приложении Web API:
Я проверил версии angular'js
file и angular-animate.js
и они совпадают с 1.5.8.
Я исключил минимизацию и группировку, поэтому файлы загружаются, как следующий фрагмент кода:
<script src="@Url.Content("~/Scripts/jquery-1.10.2.js")"></script>
<script src="@Url.Content("~/Scripts/bootstrap.js")"></script>
<script src="@Url.Content("~/Scripts/angular.js")"></script>
<script src="@Url.Content("~/Scripts/angular-route.js")"></script>
<script src="@Url.Content("~/Scripts/angular-animate.js")"></script>
<script src="@Url.Content("~/Scripts/objectiveFactory.js")"></script>
<script src="@Url.Content("~/Scripts/objective.js")"></script>
Однако ошибка такая же:
angular.js: 13920 Ошибка: [$ injector: unpr] Неизвестный поставщик:
Кто-нибудь знает, что я сделал неправильно? ('$http'
injecion отлично работает)
ngAnimate
- это имя модуля, и вы должны ввести ngAnimate
в свой основной модуль. angular.module('app', [])
здесь ваш основной модуль:
angular.module('app', [$ngAnimate']).factory('objectiveFactory', objectiveFactory);
$ngAnimate
, ошибка будет той же.
$ngAnimate
, просто $animate
$ngAnimate
.