Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.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_Html_Angularjs_Checkbox - Fatal编程技术网

Javascript 复选框单击两次发射

Javascript 复选框单击两次发射,javascript,html,angularjs,checkbox,Javascript,Html,Angularjs,Checkbox,我正在尝试动态地填写一些复选框,并使用所选项目来过滤数据 我的HTML {{category.description}} 滤器 在我的控制器中,我使用的是这个javascript,这与我见过的大多数其他示例没有什么不同 $scope.toggleSelection=函数(类别){ var idx=$scope.selection.indexOf(category); console.log('start'+idx); //当前已选定 如果(idx>-1){ $scope.selection.

我正在尝试动态地填写一些复选框,并使用所选项目来过滤数据

我的HTML


{{category.description}}
滤器
在我的控制器中,我使用的是这个javascript,这与我见过的大多数其他示例没有什么不同

$scope.toggleSelection=函数(类别){
var idx=$scope.selection.indexOf(category);
console.log('start'+idx);
//当前已选定
如果(idx>-1){
$scope.selection.splice(idx,1);
}
//是新选中的
否则{
$scope.selection.push(类别);
}
};
不幸的是,我看到控制台记录了两次,一次是-1,一次是0。 因此,我最终没有选中复选框

当我使用grunt构建应用程序并将其放在Web服务器上时,它工作正常,但当我使用grunt serve运行应用程序时,它会不断调用控制器两次。

作为Brian:


使用grunt serve编译的代码与用于生产的代码有什么不同?从在一个实例中调用两次而不是在另一个实例中调用这一事实可以看出,当通过grunt serve连接代码时,您的代码会被包含两次,但在为prod构建代码时则不会


Grunt在不同的环境中设置不同。解决了这个问题。

使用ng更改而不是ng单击有帮助吗?没有足够的信息来复制这个问题,您发布的代码很好:Hi@abos,这确实有帮助,尽管我不明白为什么…?您的代码在grunt serve与在生产环境下编译时有什么不同?从在一个实例中调用两次而不是在另一个实例中调用这一事实可以看出,当通过grunt serve连接代码时,您的代码会被包含两次,但在为prod构建代码时则不会。