Javascript AngularJS-控制器和工厂-我在包含/注入函数方面哪里出了问题?
我是个新手,不能准确指出哪里出了问题。我只是想简单地将我的工厂注入到我的控制器中,引用说:“无法读取未定义的属性‘validar’”。我有两个文件,ServiceUtil.js,其中有一个服务,CentroCustoCtrl.js,我试图在其中使用服务的功能 ServiceUtil.js上的函数:Javascript AngularJS-控制器和工厂-我在包含/注入函数方面哪里出了问题?,javascript,angularjs,dependency-injection,angularjs-scope,angularjs-service,Javascript,Angularjs,Dependency Injection,Angularjs Scope,Angularjs Service,我是个新手,不能准确指出哪里出了问题。我只是想简单地将我的工厂注入到我的控制器中,引用说:“无法读取未定义的属性‘validar’”。我有两个文件,ServiceUtil.js,其中有一个服务,CentroCustoCtrl.js,我试图在其中使用服务的功能 ServiceUtil.js上的函数: (function () { 'use strict'; angular.module('Services', []) .service('ValidarFormulario', [f
(function () {
'use strict';
angular.module('Services', [])
.service('ValidarFormulario', [function () {
this.validar = function (form) {
var valido = true;
//code
}
return valido;
}
}]);
})();
和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
);
我在工厂试过,但也没成功:
angular.module('Services', [])
.factory('ValidarFormulario', [function () {
return{
validar : function (form) {
var valido = true;
//code
}
}
return valido;
}
}
}]);
})();
请,我感谢您提供的任何帮助。问题是您在DI内联数组中有错误的依赖序列,基本上它们的数量和序列不匹配
app.controller('CentroCustoCtrl', ['$scope', '$http', 'ValidarFormulario',
//removed $rootScope, $timeout which wasn't used.
function ($scope, $http, ValidarFormulario) {
或者,无论哪种方式,只要在数组中添加依赖项,如果它们真的要在控制器中使用,如下图所示
app.controller('CentroCustoCtrl', ['$scope','$http','$rootScope','$timeout','ValidarFormulario',
function ($scope, $http, $rootScope, $timeout, ValidarFormulario) {
设置模块时,语法为:
angular.module('Services', [ here injections ])
但当您获得一个模块来使用它时,语法必须是:
angular.module('Services')
只需更改下面的代码行
app.controller('CentroCustoCtrl', ['$scope', '$http', 'ValidarFormulario', function ($scope, $http, $rootScope, $timeout, ValidarFormulario) {
到
这应该行得通。好吧,我也看到你的控制器注入错误了。你有:
App.controller('CentroCustoCtrl', ['$scope', '$http', 'ValidarFormulario', function ($scope, $http, $rootScope, $timeout, ValidarFormulario)
你应该:
app.controller('CentroCustoCtrl', ['$scope', '$http', '$rootScope', '$timeout', 'ValidarFormulario', function ($scope, $http, $rootScope,$timeout, ValidarFormulario)
“[]”上的喷油器必须带有功能参数。使用时删除此关键字ValidarFormulario@VinitSolanki当他在服务中添加功能时,
这个
关键字是正确的..Ys你是对的pankaj,这就是为什么我给你投票的原因。谢谢@PankajParkar,第一个解决方案效果很好。干得好。@EduardoAndrade理想情况下两者都应该起作用。。很高兴知道。。谢谢:-)如果答案确实解决了您的问题,请务必接受。在15-20分钟后添加与其他答案内容相同的答案是没有意义的。欢迎@Eduardo Andrade。如果你觉得答案有用,请投票表决。你是对的。我在手机上,答案还没有刷新,很抱歉。
app.controller('CentroCustoCtrl', ['$scope', '$http', '$rootScope', '$timeout', 'ValidarFormulario', function ($scope, $http, $rootScope,$timeout, ValidarFormulario)