varios servicios que otro llamar funcion entre diferencia controladores controlador comunicacion javascript angularjs dependency-injection angularjs-scope angularjs-service

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.