Esta es mi demostración usando angularjs, para crear un archivo de servicio y agregar un servicio a un controlador.
Tengo dos problemas con mi demo:
- Uno es cuando pongo
<script src="HomeController.js">
antes de<script src="MyService.js">
obtener este error,
Error: [ng: areq] El argumento 'HomeController' no es una función, no está definido
- La otra es cuando pongo
<script src="MyService.js">
antes que<script src="HomeController.js">
me sale el siguiente error,
Error: [$ injector: unpr] Proveedor desconocido: MyServiceProvider <- MyService
Mi fuente:
Expediente 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>
Expediente 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);
Archivo 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
fuente
fuente
Respuestas:
Esto crea un nuevo módulo / aplicación:
Mientras esto accede a un módulo ya creado ( observe la omisión del segundo argumento ):
Dado que utiliza el primer enfoque en ambos scripts, básicamente está anulando el módulo que creó anteriormente.
En el segundo script que se carga, use
var myApp = angular.module('myApp');
.fuente
Experimenté este error una vez. Mi problema fue que no estaba agregando FILE_NAME_WHERE_IS_MY_FUNCTION.js
entonces mi file.html nunca encontró donde estaba mi función
fuente
También asegúrese de que sus controladores estén definidos dentro de las etiquetas de secuencia de comandos hacia la parte inferior de su index.html justo antes de la etiqueta de cierre del cuerpo.
siempre que todo esté escrito "correctamente" (el mismo) en sus páginas specific.html, specific.js y app.js, esto debería resolver su problema.
fuente
Me pasaba pocas veces cuando fallaba "," entre la lista de inyecciones y la función
fuente
app.controller('commonCtrl' ['$scope', '$filter',function($scope,$filter) { }]);
También experimenté este error, pero en mi caso fue debido a la convención de nomenclatura del controlador. Declaré
controller: "QuestionController"
en.state
pero en la definición de controlador como lo declarépero debería ser
Espero que ayude a las personas que enfrentan este error debido a este estúpido error que perdí 4 horas en identificarlo.
fuente
Tengo el mismo error. Definí el script java como este
luego cambié a esto
Después de esto, mi problema está resuelto.
fuente
También encontré este mismo error y la solución para mí fue incluir mi módulo hijo en la matriz del módulo principal.
fuente
Si TODO LO DEMÁS falla y su ejecución local en la pila MEAN como yo con trago ... ¡simplemente deténgase y sirva nuevamente! Estaba sacando mi audífono revisando meticulosamente todo, desde todas sus publicaciones en vano hasta que simplemente volví a ejecutar gulp serve.
fuente
Tuve un problema similar. La solución fue asegurarse de que sus controladores no solo estén definidos dentro de las etiquetas de secuencia de comandos hacia la parte inferior de su index.html justo antes de la etiqueta de cierre para el cuerpo, sino que TAMBIÉN validen que están en el orden de cómo está estructurada su carpeta.
fuente
También encontré este problema en mi proyecto. Finalmente funcionó después de que inserté el
my-controller.js
en mikarma.conf.js
archivo, con el<script>
etiqueta.Espero que esto ayude. Hay muchas razones que pueden conducir a este problema.
fuente
También recibí este error.
Tuve que agregar mi nuevo controlador a la información de enrutamiento. \ src \ js \ app.js
Agregué mi controlador para que parezca
¡Salud!
fuente
Obviamente, las publicaciones anteriores son útiles, pero ninguna de las anteriores es útil en mi caso. El motivo fue una secuencia incorrecta de carga de scripts . Por ejemplo, en mi caso, el controlador editCtrl.js depende de (usa) ui-bootstrap-tpls.js, por lo que debe cargarse primero. Esto provocó un error:
Esto es correcto, funciona:
Entonces, para corregir el error, primero debe declarar todos los scripts sin dependencias , y luego los scripts que dependen de los declarados previamente.
fuente
Prueba esto
fuente
En mi caso, me faltaba el nombre de la aplicación Angular en el archivo html. Por ejemplo, había incluido este archivo para iniciar el código de mi aplicación. Había asumido que se estaba ejecutando, pero no fue así.
app.module.js
Sin embargo, cuando declaré la aplicación en el html tenía esto:
index.html
Pero para hacer referencia a la aplicación Angular por el nombre que usé, tuve que usar:
index.html (fijo)
fuente
Recibí el error porque había agregado el script del controlador antes del script donde había definido el módulo correspondiente en la aplicación. Primero agregue el script
Entonces solo agrega
En el archivo principal.
fuente
Error: ng: areq Argumento incorrecto me ha un par de veces porque cierro el corchete demasiado pronto. En el ejemplo BAD a continuación, se cierra incorrectamente después de '$ state' cuando en realidad debería ir antes del paréntesis final.
MALO:
BUENO:
fuente
Si. Como muchos han señalado anteriormente, he agregado la ruta src a todos los archivos del controlador en el index.html.
Esto solucionó ese error.
fuente
Tuve el mismo problema, pero olvidé incluir el archivo en el proceso de minimización de grunt / gulp.
Espero que ayude.
fuente
En mi situación, este error apareció cuando no declaré la función dentro de un argumento de matriz.
El del error :
El fijo:
fuente
También verifique si hay errores ortográficos .
fuente
Compruebe si su página HTML incluye:
angular.min
guiónapp.js
El orden en que se incluyen los archivos es importante. Fue mi solución a este problema.
Espero que esto ayude.
fuente
Lo mismo para mí, coma ',' antes de la función me ayudó a solucionar el problema - Error: ng: areq Bad Argument
fuente
Mi archivo de controlador se almacenó en caché como vacío. Limpiar la caché me lo arregló.
fuente
Accidentalmente moví mi HomeController.js directamente, donde se esperaba. Poniéndolo de nuevo en su ubicación original.
Después de eso, mi sitio web comenzó a cargar páginas automáticamente cada segundo, ni siquiera pude ver el error. Así que borré la caché del navegador. Resolvió el problema
fuente