AngularJS-控制器和工厂-我在include/inject函数方面哪里出了问题

AngularJS - controller and factory - where am I going wrong at include/inject functions?

本文关键字:方面哪 函数 问题 inject 控制器 工厂 include 我在 AngularJS-      更新时间:2023-09-26

我是Angular的新手,无法确定哪里出了问题。我只是想简单地将我的工厂注入到我的控制器中,引用说:"无法读取未定义的属性‘validar’"。我有两个文件,ServiceUtil.js,其中有一个服务,CentroCustoCtrl.js,我正在尝试使用服务的功能。

ServiceUtil.js:上的函数

 (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) {

只需更改以下代码行

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) {

这应该行得通。

好吧,我也看到你的控制器注入是错误的。您有:

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)

"[]"上的注入器必须具有函数参数。

设置模块时,语法为:

angular.module('Services', [ here injections ])

但当你得到一个模块来使用它时,语法必须是:

angular.module('Services')
相关文章: