AngularJS-控制器和工厂-我在include/inject函数方面哪里出了问题
AngularJS - controller and factory - where am I going wrong at include/inject functions?
我是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')
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 如何使用dojo方面调用常规JavaScript函数
- 哪一个在访问数组长度方面的性能更好
- 在层中加载多个图像,哪种方法更有效(资源方面)?-加载并编译PHP或将其堆叠
- 这些事件处理程序中的哪一个应该在窗口关闭时触发自定义函数
- AngularJS-控制器和工厂-我在include/inject函数方面哪里出了问题
- 哪种代码更有效?(调用 JavaScript 函数)
- JavaScript之谜:2个在构造函数,原型和__proto__链接方面看起来相同的对象,行为不同
- 哪一个最好在 jquery 中连续重复函数 setInterval 或回调函数
- Javascript在类似条件下函数调用开销方面的差异
- 如果一个函数的大部分执行是以输入为条件的,那么下面哪一种是更好的实现方式
- 通过访问器传递函数的标志——这是哪种JavaScript模式?
- JavaScript提供了函数式编程方面的哪些子集和类似lisp的特性?
- 为什么有两种不同的角函数包装方法,哪一种最好?
- 哪种方式在javascript中传递函数更好
- 性能方面,算法复杂性方面,下面两个JS函数中哪一个用于将字符串的第一个字母大写更好,为什么?
- 关于在函数语法方面使用一个优于另一个的好处的问题