Esta é minha demonstração usando angularjs, para criar um arquivo de serviço e adicionar serviço a um controlador.
Tenho dois problemas com minha demonstração:
- Um é quando coloco
<script src="HomeController.js">
antes de<script src="MyService.js">
obter este erro,
Erro: [ng: areq] O argumento 'HomeController' não é uma função, ficou indefinido
- A outra é quando coloco
<script src="MyService.js">
antes de<script src="HomeController.js">
obter o seguinte erro,
Erro: [$ injector: despr] Provedor desconhecido: MyServiceProvider <- MyService
Minha fonte:
Arquivo 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>
Arquivo 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);
Arquivo 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
fonte
fonte
Respostas:
Isso cria um novo módulo / aplicativo:
Enquanto isso acessa um módulo já criado ( observe a omissão do segundo argumento ):
Como você usa a primeira abordagem em ambos os scripts, basicamente substitui o módulo criado anteriormente.
No segundo script sendo carregado, use
var myApp = angular.module('myApp');
.fonte
Eu experimentei esse erro uma vez. Meu problema é que eu não estava adicionando FILE_NAME_WHERE_IS_MY_FUNCTION.js
então meu arquivo.html nunca encontrou onde minha função estava
fonte
Certifique-se também de que seus controladores estão definidos nas tags de script na parte inferior de seu index.html, antes da tag de fechamento do corpo.
desde que tudo esteja escrito "corretamente" (o mesmo) em suas páginas specific.html, specific.js e app.js, isso deve resolver seu problema.
fonte
Aconteceu comigo poucas vezes sempre que sinto falta "," entre lista de injeções e função
fonte
app.controller('commonCtrl' ['$scope', '$filter',function($scope,$filter) { }]);
Eu também encontrei esse erro, mas no meu caso foi por causa da convenção de nomenclatura do controlador. Eu declarei
controller: "QuestionController"
em,.state
mas na definição do controlador eu declarei comomas deveria ser
Espero que ajude as pessoas que enfrentam esse erro por causa desse erro estúpido que perdi 4 horas para identificá-lo.
fonte
Eu tenho o mesmo erro. Eu defini java script assim
então mudei para este
Depois disso, meu problema está resolvido.
fonte
Eu também encontrei esse mesmo erro e a correção para mim foi incluir meu módulo filho na matriz do módulo principal.
fonte
Se TODOS OS OUTROS falharem e você estiver executando localmente na pilha MÉDIA como eu com gole ... pare e sirva novamente! Eu estava puxando meu ouvido, verificando meticulosamente tudo, de todas as suas postagens, sem sucesso, até que eu simplesmente refiz o serviço de gole.
fonte
Eu tive um problema semelhante. A correção foi garantir que seus controladores não sejam apenas definidos nas tags de script na parte inferior de seu index.html, logo antes da tag de fechamento do corpo, mas TAMBÉM validar se eles estão na ordem em que sua pasta está estruturada.
fonte
Eu também encontrei esse problema no meu projeto. Eventualmente funcionou depois que inseri o
my-controller.js
no meukarma.conf.js
arquivo, com a<script>
tag.Espero que isso ajude. Existem muitas razões que podem levar a este problema.
fonte
Eu também recebi esse erro.
Tive que adicionar meu novo controlador às informações de roteamento. \ src \ js \ app.js
Eu adicionei meu controlador para fazer parecer
Felicidades!
fonte
Obviamente que os posts anteriores são úteis, mas qualquer um dos itens acima não é útil no meu caso. O motivo estava na sequência errada de carregamento de scripts . Por exemplo, no meu caso, o controlador editCtrl.js depende de (usa) ui-bootstrap-tpls.js, portanto, deve ser carregado primeiro. Isso causou um erro:
Isso é certo, funciona:
Portanto, para corrigir o erro, você precisa primeiro declarar todos os scripts sem dependências e, em seguida, os scripts que dependem do declarado anteriormente.
fonte
Tente isto
fonte
No meu caso, estava faltando o nome do aplicativo Angular no arquivo html. Por exemplo, incluí este arquivo para iniciar o código do meu aplicativo. Achei que estava sendo executado, mas não foi.
app.module.js
No entanto, quando declarei o aplicativo em html, eu tinha o seguinte:
index.html
Mas para fazer referência ao aplicativo Angular pelo nome que usei, tive que usar:
index.html (fixo)
fonte
Eu estava recebendo o erro porque adicionei o script do controlador antes do script em que defini o módulo correspondente no aplicativo. Primeiro adicione o script
Então apenas adicione
No arquivo principal.
fonte
Erro: ng: areq Argumento incorreto me ocorreu algumas vezes porque fechei o colchete muito cedo. No exemplo RUIM abaixo, ele é fechado incorretamente após '$ state' quando deveria ir antes do parêntese final.
RUIM:
BOA:
fonte
Sim. Como muitos apontaram anteriormente, adicionei o caminho src a todos os arquivos do controlador no index.html.
Isso corrigiu esse erro.
fonte
Eu tive o mesmo problema, mas esqueci de incluir o arquivo no processo de minimização grunt / gulp.
Espero que ajude.
fonte
Na minha situação, esse erro apareceu quando eu não declarei a função em um argumento de array.
Aquele com erro :
O fixo:
fonte
Verifique também se há erros de ortografia .
fonte
Verifique se sua página HTML inclui:
angular.min
roteiroapp.js
A ordem em que os arquivos são incluídos é importante. Foi a minha solução para este problema.
Espero que isto ajude.
fonte
A mesma coisa para mim, vírgula ',' antes da função me ajudou a corrigir o problema - Erro: ng: areq Argumento incorreto
fonte
Meu arquivo de controlador foi armazenado em cache como vazio. Limpar o cache corrigiu isso para mim.
fonte
Eu acidentalmente movi meu HomeController.js para fora do diretamente, onde era esperado. Colocando-o novamente no local original.
Depois disso, meu site começou a carregar páginas automaticamente a cada segundo, nem consegui ver o erro. Então, limpei o cache do navegador. Resolveu o problema
fonte