Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript回调中发送索引值_Javascript - Fatal编程技术网

在JavaScript回调中发送索引值

在JavaScript回调中发送索引值,javascript,Javascript,我使用SignaturepedJS插件在我的站点中实现签名。 我有多个签名类型和多个用户。 在这个for中,我为每个画布元素在所有用户和tutch SignaturePed类上运行 for (var i = 0; i < $scope.summary.insurance.members.length; i++) { if ($scope.summary.insurance.members[i].Age >= 18) { if ($scope.summary

我使用SignaturepedJS插件在我的站点中实现签名。 我有多个签名类型和多个用户。 在这个for中,我为每个画布元素在所有用户和tutch SignaturePed类上运行

for (var i = 0; i < $scope.summary.insurance.members.length; i++) {

    if ($scope.summary.insurance.members[i].Age >= 18) {

        if ($scope.summary.insurance.payment.IdentityNo == $scope.summary.insurance.members[i].IdentityNo && $scope.summary.localPolicy.Action == 0) { //payer only

            $scope.summary.signaturePad[i] = {

                1: new SignaturePad($scope.summary.canvas[i][1], {
                    'onEnd': function() {
                        $scope.summary.saveSignOnBlur(1, i)
                    }
                }),

                2: new SignaturePad($scope.summary.canvas[i][2], {
                    'onEnd': function() {
                        $scope.summary.saveSignOnBlur(2, i)
                    }
                }),

                3: new SignaturePad($scope.summary.canvas[i][3], {
                    'onEnd': function() {
                        $scope.summary.saveSignOnBlur(3, i)
                    }
                }),

            }

        } else {

            $scope.summary.signaturePad[i] = {

                1: new SignaturePad($scope.summary.canvas[i][1], {
                    'onEnd': function() {
                        $scope.summary.saveSignOnBlur(1, i)
                    }
                }),

                2: new SignaturePad($scope.summary.canvas[i][2], {
                    'onEnd': function() {
                        $scope.summary.saveSignOnBlur(2, i)
                    }
                }),

            }

        }

    }

}
for(var i=0;i<$scope.summary.insurance.members.length;i++){
if($scope.summary.insurance.members[i].年龄>=18){
如果($scope.summary.insurance.payment.IdentityNo==$scope.summary.insurance.members[i].IdentityNo&&$scope.summary.localPolicy.Action==0){//仅限付款人
$scope.summary.signaturePad[i]={
1:新SignaturePad($scope.summary.canvas[i][1]{
“onEnd”:函数(){
$scope.summary.saveSignOnBlur(1,i)
}
}),
2:新SignaturePad($scope.summary.canvas[i][2]{
“onEnd”:函数(){
$scope.summary.saveSignOnBlur(2,i)
}
}),
3:新SignaturePad($scope.summary.canvas[i][3]{
“onEnd”:函数(){
$scope.summary.saveSignOnBlur(3,i)
}
}),
}
}否则{
$scope.summary.signaturePad[i]={
1:新SignaturePad($scope.summary.canvas[i][1]{
“onEnd”:函数(){
$scope.summary.saveSignOnBlur(1,i)
}
}),
2:新SignaturePad($scope.summary.canvas[i][2]{
“onEnd”:函数(){
$scope.summary.saveSignOnBlur(2,i)
}
}),
}
}
}
}

我的问题是,当回调运行时,索引(i)值是2(对于2个用户),因为在循环结束时,这是索引值,正如您可以在该问题的注释中看到的,有两种解决方案 第一个简单的解决方案:使用
使索引变量变为局部变量(事实上,在每次迭代中都是一个新变量),此解决方案的缺点是
仅受es6支持,因此无法在explorer或edge中工作。 因为我需要知道,这个脚本将在资源管理器中工作,我已经实现了第二个闭包解决方案,并且闭包将在每次迭代中产生一个新的范围,因此:

(变量i=0;i<…;i++)的
{
(职能(一){…})(一);

}

这是因为你的
i
是全局的,所以在你的循环中创建一个新的作用域:
(函数(i){…})(i)
如果支持es6,请使用
关键字而不是
var
。如果这个问题是关于angularJS的,请尝试添加它的标记。