Это моя демонстрация с использованием angularjs для создания служебного файла и добавления службы в контроллер.
У меня две проблемы с моей демонстрацией:
- Первый - когда я ставлю
<script src="HomeController.js">
перед тем,<script src="MyService.js">
как получить эту ошибку,
Ошибка: [ng: areq] Аргумент HomeController не является функцией, получено значение undefined
- Другой - когда я ставлю
<script src="MyService.js">
до того,<script src="HomeController.js">
как получаю следующую ошибку:
Ошибка: [$ injector: unpr] Неизвестный поставщик: MyServiceProvider <- MyService
Мой источник:
Файл Index.html
:
<!DOCTYPE html>
<html >
<head lang="en">…</head>
<body ng-app="myApp">
…
<div ng-controller="HomeController">
<div ng-repeat="item in hello">{{item.id + item.name}}</div>
</div>
<script src="Scripts/angular.js"></script>
<script src="Scripts/angular-route.js"></script>
<!-- App libs -->
<script src="app/app.js"></script>
<script src="app/services/MyService.js"></script>
<script src="app/controllers/HomeController.js"></script>
</body>
</html>
Файл HomeController.js
:
(function(angular){
'use strict';
var myApp = angular.module('myApp',[]);
myApp.controller('HomeController',function($scope,MyService){
$scope.hello=[];
$scope.hello = MyService.getHello();
});
})(window.angular);
Файл MyService.js
:
(function(angular){
'use strict';
var myApp = angular.module('myApp',[]);
myApp.service('MyService', function () {
var hello =[ {id:1,name:'cuong'},
{id:2,name:'nguyen'}];
this.getHello = function(){
return hello;
};
});
})(window.angular);
javascript
angularjs
angularjs-service
Cuong.Ho
источник
источник
Ответы:
Это создает новый модуль / приложение:
Пока это обращается к уже созданному модулю ( обратите внимание на пропуск второго аргумента ):
Поскольку вы используете первый подход в обоих сценариях, вы в основном переопределяете ранее созданный модуль.
При загрузке второго скрипта используйте
var myApp = angular.module('myApp');
.источник
Однажды я столкнулся с этой ошибкой. Моя проблема заключалась в том, что я не добавлял FILE_NAME_WHERE_IS_MY_FUNCTION.js
поэтому мой file.html никогда не находил, где была моя функция
источник
Также убедитесь, что ваши контроллеры определены в тегах сценария в нижней части вашего index.html непосредственно перед закрывающим тегом для body.
при условии, что все написано «правильно» (то же самое) на страницах specific.html, specific.js и app.js, это должно решить вашу проблему.
источник
Со мной случалось несколько раз, когда я пропускал "," между списком инъекций и функцией
источник
app.controller('commonCtrl' ['$scope', '$filter',function($scope,$filter) { }]);
Я также столкнулся с этой ошибкой, но в моем случае это было из-за соглашения об именах контроллеров. Я заявил
controller: "QuestionController"
в.state
но в определении контроллера я заявил , что хотелно это должно быть
Надеюсь, это поможет людям, столкнувшимся с этой ошибкой из-за этой глупой ошибки, которую я потратил 4 часа на ее выявление.
источник
У меня такая же ошибка. Я определил java-скрипт следующим образом
затем я перешел на это
После этого моя проблема решена.
источник
Я также столкнулся с той же ошибкой, и исправление для меня заключалось в том, чтобы включить мой дочерний модуль в основной массив модулей.
источник
Если ALL ELSE терпит неудачу и вы работаете локально в стеке MEAN, как я, с глотком ... просто остановитесь и снова подайте! Я вытащил свой слух, тщательно проверяя все из всех ваших сообщений, но безрезультатно, пока я просто не перезапустил gulp serve.
источник
У меня была аналогичная проблема. Исправление было гарантировать, что ваши ctrollers не только определены в тегах сценария в нижней части вашего index.html непосредственно перед закрывающим тегом для body, но ТАКЖЕ подтверждают, что они находятся в порядке структуры вашей папки.
источник
Я тоже столкнулся с этой проблемой в своем проекте. В конечном итоге это сработало после того, как я вставил
my-controller.js
в свойkarma.conf.js
файл с<script>
тегом.Надеюсь, это поможет. Причин, которые могут привести к этой проблеме, довольно много.
источник
Я тоже получил эту ошибку.
Мне пришлось добавить мой новый контроллер в информацию о маршрутизации. \ src \ js \ app.js
Я добавил свой контроллер, чтобы он выглядел как
Ура!
источник
Очевидно, что предыдущие сообщения полезны, но в моем случае все вышеперечисленное не помогает. Причина в неправильной последовательности загрузки скриптов . Например, в моем случае контроллер editCtrl.js зависит от (использует) ui-bootstrap-tpls.js, поэтому он должен быть загружен первым. Это вызвало ошибку:
Это правильно, работает:
Итак, чтобы исправить ошибку, вам нужно сначала объявить все скрипты без зависимостей , а затем скрипты, которые зависят от ранее объявленных.
источник
Попробуй это
источник
В моем случае мне не хватало имени приложения Angular в html файле. Например, я включил этот файл в начало кода моего приложения. Я предполагал, что это запущено, но это не так.
app.module.js
Однако, когда я объявил приложение в html, у меня было следующее:
index.html
Но для ссылки на приложение Angular по имени, которое я использовал, мне пришлось использовать:
index.html (исправлено)
источник
Я получал сообщение об ошибке, потому что я добавил сценарий контроллера перед сценарием, в котором я определил соответствующий модуль в приложении. Сначала добавьте скрипт
Тогда только добавьте
В основном файле.
источник
Ошибка: ng: areq Плохой аргумент получал меня пару раз, потому что я слишком рано закрываю квадратную скобку. В приведенном ниже примере BAD он неправильно закрывается после '$ state', хотя на самом деле он должен стоять перед последней круглой скобкой.
ПЛОХОЙ:
ХОРОШО:
источник
Да. Как многие ранее отмечали, я добавил путь src ко всем файлам контроллера в index.html.
Это исправило эту ошибку.
источник
У меня была такая же проблема, но я забыл включить файл в процесс минимизации grunt / gulp.
Надеюсь, это поможет.
источник
В моей ситуации эта ошибка появилась, когда я не объявил функцию в аргументе массива.
Тот с ошибкой :
Фиксированный:
источник
Также проверьте орфографические ошибки .
источник
Убедитесь, что ваша HTML-страница включает:
angular.min
сценарийapp.js
Порядок включения файлов важен. Это было моим решением этой проблемы.
Надеюсь это поможет.
источник
То же самое для меня, запятая ',' перед функцией помогла мне решить проблему - Ошибка: ng: areq Bad Argument
источник
Мой файл контроллера был кэширован как пустой. Очистка кеша исправила это для меня.
источник
Я случайно переместил свой HomeController.js из папки , где это ожидалось. Ставим его снова на исходное место.
После этого мой сайт начал автоматически загружать страницы каждую секунду, я даже не мог увидеть ошибку. Итак, я очистил кеш браузера. Это решило проблему
источник