javascript - que - servicios en angular js
AngularJS-controlador y fábrica-¿dónde me estoy equivocando en las funciones de inclusión/inyección? (4)
Bueno, también he visto que las inyecciones de tu controlador son incorrectas. Tienes:
App.controller(''CentroCustoCtrl'', [''$scope'', ''$http'', ''ValidarFormulario'', function ($scope, $http, $rootScope, $timeout, ValidarFormulario)
Y deberías tener:
app.controller(''CentroCustoCtrl'', [''$scope'', ''$http'', ''$rootScope'', ''$timeout'', ''ValidarFormulario'', function ($scope, $http, $rootScope,$timeout, ValidarFormulario)
Los inyectores en "[]" deben configurarse con los parámetros de función.
Soy nuevo en Angular y no puedo identificar dónde me estoy equivocando. Solo intento inyectar mi fábrica en mi controlador, la referencia decía: "No se puede leer la propiedad ''validar'' de indefinido". Tengo dos archivos, ServiceUtil.js donde tengo un servicio y CentroCustoCtrl.js donde trato de usar la función del servicio.
La función en ServiceUtil.js:
(function () {
''use strict'';
angular.module(''Services'', [])
.service(''ValidarFormulario'', [function () {
this.validar = function (form) {
var valido = true;
//code
}
return valido;
}
}]);
})();
Y CentroCustoCtrl.js
(function () {
''use strict'';
var app = angular.module("start", [''AxelSoft'', ''ngLocalize'',
''ngLocalize.Config'', ''mvComponentes'',''Services''])
.value(''localeConf'', {
basePath: ''../Scripts/Locales'', ...
...
});
app.controller(''CentroCustoCtrl'', [''$scope'', ''$http'', ''ValidarFormulario'', function ($scope, $http, $rootScope, $timeout, ValidarFormulario) {
$scope.Salvar = function () {
if (ValidarFormulario.validar(document.getElementsByTagName(''input''))) { ...// Cannot read property ''validar'' of undefined
);
Intenté con la fábrica, pero no funcionó demasiado:
angular.module(''Services'', [])
.factory(''ValidarFormulario'', [function () {
return{
validar : function (form) {
var valido = true;
//code
}
}
return valido;
}
}
}]);
})();
Por favor, agradezco cualquier ayuda que pueda brindar.
Cuando configura un módulo, la sintaxis es:
angular.module(''Services'', [ here injections ])
Pero cuando obtiene un módulo para usarlo, la sintaxis debe ser:
angular.module(''Services'')
El problema es que tenías una secuencia de dependencia incorrecta dentro de la matriz en línea DI, básicamente no coinciden en número y sus secuencias
app.controller(''CentroCustoCtrl'', [''$scope'', ''$http'', ''ValidarFormulario'',
//removed $rootScope, $timeout which wasn''t used.
function ($scope, $http, ValidarFormulario) {
O de cualquier manera, podrías agregar la dependencia dentro de la matriz, si realmente van a usar dentro del controlador, como se muestra a continuación
app.controller(''CentroCustoCtrl'', [''$scope'',''$http'',''$rootScope'',''$timeout'',''ValidarFormulario'',
function ($scope, $http, $rootScope, $timeout, ValidarFormulario) {
Simplemente cambie la siguiente línea de código
app.controller(''CentroCustoCtrl'', [''$scope'', ''$http'', ''ValidarFormulario'', function ($scope, $http, $rootScope, $timeout, ValidarFormulario) {
a
app.controller(''CentroCustoCtrl'', [''$scope'', ''$http'', ''$rootScope'', ''$timeout'', ''ValidarFormulario'', function ($scope, $http, $rootScope, $timeout, ValidarFormulario) {
Esto debería funcionar.