angular 将服务字符串参数转换为数组
angular inside the service string argument converted to array
我有以下angular结构
//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;
}):
我可以看到我在第 1 行中输入的字符串。但在第 2 行中,它是一个数组。有什么原因吗??
您正在将 arguments
传递给服务函数,它不是数组,它只是数组。它是传递给函数 validateMyname
的所有参数的集合。如果你只想传递名字,你可以这样做:
return myService.validateXY(arg);
简而言之:
第 1 行 - 您只是通过函数参数使用传入值,该参数是在该函数范围内定义的局部变量 arg
。
Line2 - 您正在访问从 LINE1
之后的行传入的特殊参数对象
如果您希望将从控制器函数传输的可变数量的参数传递给您的服务函数,您可以使用 function.apply:
myService.validateXY.apply(null, arguments); //null provided you don't refer to context via this.
我有以下angular结构
//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;
}):
我可以看到我在第 1 行中输入的字符串。但在第 2 行中,它是一个数组。有什么原因吗??
您正在将 arguments
传递给服务函数,它不是数组,它只是数组。它是传递给函数 validateMyname
的所有参数的集合。如果你只想传递名字,你可以这样做:
return myService.validateXY(arg);
简而言之:
第 1 行 - 您只是通过函数参数使用传入值,该参数是在该函数范围内定义的局部变量 arg
。
Line2 - 您正在访问从 LINE1
之后的行传入的特殊参数对象如果您希望将从控制器函数传输的可变数量的参数传递给您的服务函数,您可以使用 function.apply:
myService.validateXY.apply(null, arguments); //null provided you don't refer to context via this.