我有以下角度结构
//html
<input type="text" model="name">
<div ng-if="!validateMyname(name)"></div>
//controller
$scope.validateMyname = function(arg){
console.log(arg); //LINE 1
return myService.validateXY(arguments);
}
//service
angular.module('services').factory('myService', function () {
myService.validateXY = function(a){
console.log(a); //LINE 2
}
return myService;
}):
我可以看到我在LINE 1中输入的字符串,但在LINE 2中,它是一个数组。任何理由??
答案 0 :(得分:2)
您正在将arguments
传递给服务函数,它不是一个像数组一样的数组。它是传递给函数validateMyname
的所有参数的集合。如果你只想传递名字,你可以这样做:
return myService.validateXY(arg);
简而言之:
Line1 - 您只是通过函数的参数使用传入值,该参数是在该函数范围内定义的局部变量arg
。
Line2 - 您正在访问从LINE1
之后的行传入的特殊参数对象如果您希望将从控制器函数传输的可变数量的参数传递给您的服务函数,则可以使用function.apply来执行此操作:
myService.validateXY.apply(null, arguments); //null provided you don't refer to context via this.