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值)。您的解决方案也运行良好,可能更优化,我不知道:)