Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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 angularJS,将复选框列表展平为CSV_Javascript_Angularjs_Csv - Fatal编程技术网

Javascript angularJS,将复选框列表展平为CSV

Javascript angularJS,将复选框列表展平为CSV,javascript,angularjs,csv,Javascript,Angularjs,Csv,我有一个服务,说回来 {"001":"Communication","002":"Developement","003":"Environment","004":"Equipment"} 我需要将这些都放在复选框中,用户启用或禁用它们,最后我将选中的值恢复为CSV键 假设用户检查了“开发”和“设备”,所以我需要获得“002004”中的值 下面是一些已经检查过的值(002开发和003环境): 角度模块('tagsApp',[]) .controller('tagsController',['$

我有一个服务,说回来

{"001":"Communication","002":"Developement","003":"Environment","004":"Equipment"}
我需要将这些都放在复选框中,用户启用或禁用它们,最后我将选中的值恢复为CSV键

假设用户检查了“开发”和“设备”,所以我需要获得“002004”中的值

下面是一些已经检查过的值(002开发和003环境):

角度模块('tagsApp',[]) .controller('tagsController',['$scope','$http',函数($scope,$http){ //#标记隐藏元素中存在初始值 $scope.tags=$('#tags').val(); var tags=$scope.tags.split(“,”); //我需要一个obj['key']='key'数组 $scope.myTagsArray={}; tags.forEach(函数(tag){$scope.myTagsArray[tag]=tag;}); //获取所有可能的值 $http.get(“http://www.mocky.io/v2/597866a7130000d704c0fed3") .然后(功能(响应){ $scope.allTags=response.data; }); $scope.change=函数(myTagsArray){ log(“myTagsArray:”+Object.values($scope.myTagsArray).join(“,”+“!”); }; }]);

标签
{{value}}

如果希望在检查时保存相应的密钥,可以尝试以下代码

angular.module(“tagsApp”,[]).controller(“tagsController”[
“$scope”,
“$http”,
函数($scope,$http){
//获取所有可能的值
$scope.allTags={
“001”:“通信”,
“002”:“发展”,
“003”:“环境”,
“004”:“设备”
};
$scope.hidval=“002003”;
$scope.checked=[];
$scope.tags=[];
$scope.keys=[];
$scope.tags=$scope.hidval.split(“,”);
$scope.tags.forEach(函数(标记){
$scope.checked[tag]=true;
$scope.keys.push(标签);
});
$scope.change=函数(mykey){
var ind=$scope.keys.indexOf(mykey);
如果($scope.checked[mykey]){
$scope.checked[mykey]=false;
$范围键拼接(ind,1);
}否则{
$scope.checked[mykey]=true;
$scope.keys.push(mykey);
}
var result=$scope.keys.join();
控制台日志(结果);
$scope.hidval=结果;
};
}
]);

标签
{{hidval}}
{{value}}
基于Vivz的答案(非常感谢您的努力),以下是可行的解决方案

angular.module(“tagsApp”,[]).controller(“tagsController”[
“$scope”,
职能($范围){
//获取所有可能的值
$scope.allTags={
“001”:“通信”,
“002”:“发展”,
“003”:“环境”,
“004”:“设备”
};
$scope.selectedTags=$(“#标记”).val().split(“,”);
$scope.tagsArray={};
//用“false”初始化所有
Object.keys($scope.allTags).forEach(函数(标记){$scope.tagsArray[tag]=“”;});
//选中从隐藏标记中预选的
$scope.selectedTags.forEach(函数(标记){$scope.tagsArray[tag]=tag;});
$scope.change=函数(mykey){
var result=Object.values($scope.tagsArray)
.filter(函数(o){return o;})
.join();//删除数组中的空值
$(“#标记”).val(结果);//更新隐藏的#标记
控制台日志(结果);
};
}
]);

标签
{{value}}

您的ng模型不需要{{}。像这样更改它ng model=“tagsArray[key']”ng true value=“'key'””谢谢,很好的一点,不幸的是,这并不能解决问题……代码笔中的复选框在哪里?我不知道,可能API(CORS)有问题?复选框不会出现在输出中…是否有方法绑定隐藏的输入值以获得CSV并考虑初始值?如何尝试将值转换为CSV?什么初始值?是的。你不必把它放在{{}它把我放在“key”而不是“001”。。。我这里有一个“工作”的例子,初始值被加载,但实际上没有工作,因为案例没有改变。。。(@Serge Idk你想做什么,但我已经更新了我的答案。检查这是否是你需要的。我仍然不明白为什么我的答案不正确。你想要的是什么?你的答案是可以的,但不完整。我需要用CSV字符串更新标记的值,从你的数组中获取。你在哪里设置CSV strin的值代码中的gs?在我的解决方案中,我在隐藏字段中更新了它。这有点不同,因为实际上没有使用
change
(只是更新CSV值)。您的解决方案也运行良好,可能更优化,我不知道:)