Вот простой пример того, что я пытаюсь сделать. Я предваряю это, сказав, что я работаю в качестве сопровождающего в течение 3 недель на уже построенном проекте в угловом режиме, и у меня есть несовершеннолетний, в лучшем понимании угловатого на сегодняшний день. я могу работать с контроллерами, представлениями и моделями, все в порядке. но когда приходит время понять вливание зависимостей, меня смущают неопределенные ошибки. Теперь пришло время мне нужно узнать о том, как работает Injector, поэтому вот небольшое тестовое приложение, которое я построил для своих собственных целей обучения. Я действительно не знаю, является ли это правильным способом создания углового приложения. Документация, которую я считаю в лучшем случае запутанной.Угловая зависимость. какого черта я делаю неправильно?
HTML
<div ng-app="app">
<div ng-controller="EC as e">
</div>
</div>
Javascript
var app = angular.module('app',[]);
app.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push(function($q, $window) {
return {
'request': function(config) {
config.headers['Authorization'] = 'bearer '+ $window.localStorage.token;
return config;
}
};
});
}]);
function EC($scope,$http,$window) {
var vm = this;
vm.api = function(resource){
return ('https://api.website.com/v1/'+resource).replace('//','/');
};
$window.localStorage.token = 'foobar';
$http.put(vm.api('/users/me'), { loggedIn: true }).then(function(response){
$http.get(vm.api('/users/me')).then.function(response){
vm.user = response.data;
});
});
}
EC.$inject = ['$scope','$http','$window'];
app.controller('EC',EC);
app.run();
Я предположил, что линия EC.$inject = ['$scope','$http','$window'];
будет страховать, что мой контролеры конструктор будет вызван с этими услугами, или как там они называются , как аргументы. По-видимому, это не так. Может кто-нибудь объяснить мне, как мне 5, как это работает, и почему я получаю сообщение об ошибке?
Сообщение об ошибке:
Error: [$injector:modulerr] http://errors.angularjs.org/1.5.6/$injector/modulerr
Фактическая проблема заключается в том, что я не знал, что должен был включить дополнительные файлы для $ http, которые будут доступны. ваша скрипка показывает, что на самом деле неправильно, но по-другому. код, который я предоставил, является просто манекеном, поэтому синтаксическая ошибка была красной селедкой в моих попытках сделать краткий пример, иллюстрирующий проблему. после применения недостающих ресурсов мой код теперь работает. Я ценю ваши усилия. – r3wt
Это была проблема с инъекцией на 100%. Я не сомневаюсь, что в коде есть другие вещи. – Nix
И у вас нет других файлов для $ http – Nix