Javascript 在ng repeat中为选中的复选框取值
我希望能够只选择一个复选框,并在选中该复选框时在控制器的函数中获取该值 控制器Javascript 在ng repeat中为选中的复选框取值,javascript,angularjs,checkbox,Javascript,Angularjs,Checkbox,我希望能够只选择一个复选框,并在选中该复选框时在控制器的函数中获取该值 控制器 $foldersArray = [Folder 1 , Folder 2, Folder 3....]; $selectedFolderName = function(){ var folderName = 'folder name ' } 查看 <div class="checkbox"> <ui> <li ng-repeat="folder in folders
$foldersArray = [Folder 1 , Folder 2, Folder 3....];
$selectedFolderName = function(){
var folderName = 'folder name '
}
查看
<div class="checkbox">
<ui>
<li ng-repeat="folder in foldersArray">
<label><input type="checkbox" ng-checked="folder" ng-click=selectedFolderName()"/>{{folder}}</label>
</li>
</ui>
</div>
像这样,我所有的单选按钮都被选中了…控制台中没有任何内容
编辑添加的插销
这是普朗克:
编辑1 要解决此问题,请执行以下操作:
var-app=angular.module('plunker',[]);
应用程序控制器('MainCtrl',函数($scope){
$scope.foldersArray=['Folder1','Folder2','Folder3'];
$scope.selectedFolderName=函数(文件夹){
var folderName=文件夹;
console.log(folderName);
};
});代码>
安古拉斯普朗克
文件。写(“”);
{{文件夹}}
您可以这样做:
我已经更改了ng重复:
{{文件夹}}
编辑:
您可以按如下方式操作数据:
$scope.foldersArray = ['Folder1', 'Folder2', 'Folder3'];
$scope.foldersArrayNew = {};
for(var i = 0; i < $scope.foldersArray.length;i++) {
$scope.foldersArrayNew[$scope.foldersArray[i]] = {selected: false};
}
$scope.foldersArray = $scope.foldersArrayNew;
$scope.foldersArray=['Folder1','Folder2','Folder3'];
$scope.foldersArrayNew={};
对于(变量i=0;i<$scope.foldersArray.length;i++){
$scope.foldersArrayNew[$scope.foldersArray[i]]={selected:false};
}
$scope.foldersArray=$scope.foldersArray新建;
在AngularJS中,要使单选按钮作为一个组工作,您需要添加值
属性,该属性应仅为字符串
摘自
选择时应将ngModel表达式设置为的值。请注意,value只支持字符串值,即范围模型也需要是字符串。如果需要复杂的模型(数字、对象等),请使用ngValue
因此,通过添加value
修改示例,可以获得所需的结果
var-app=angular.module(“testapp”,[]);
应用程序控制器(“arrCntrl”,[“$scope”,函数($scope){
$scope.foldersArray=[“文件夹1”、“文件夹2”、“文件夹3”];
$scope.selectedFolder={
姓名:“
};
$scope.selectedFolderName=函数(文件夹){
console.log($scope.selectedFolder)
}
}])
{{文件夹}}
如果只想选择一个单选按钮,则应使用单选按钮。@tymeJV i更新了我尝试使用单选按钮的代码…您使用单选按钮更新的代码仍在使用复选框。@tymeJV misstype i我的代码中有type=“radio”,仍然不起作用。。您能提供一把小提琴吗?您还应该在控制器中将您的方法定义为$scope.selectedFolderName。这是可行的,在控制台中,我获得了选定的文件夹名称。一件不好的事情是,如果我点击文件夹1,然后点击文件夹2,两个单选按钮都保持选中状态……我们在控制器中的ng model=“itemFolder”在哪里使用?它正在工作,但我很困惑:PYou如何删除并运行新的测试。我将ng模型用于控制收音机按钮的选择我看到了,所以我只需要在输入属性中添加name=“folder”。是的,这是可行的,但在foldersArray中,我从服务中获取数据,无法更改数据…@Bukic我添加了一些更改,以便您能够操作data@Alon由于某些原因,只有当我第一次单击文件夹并在控制台中显示时,这才起作用。如果我再次点击同一个文件夹,它不会在控制台中打印任何内容。。。也许是我的错
$selectedFolderName = function(folder){
console.log(folder.selected);
}
<li ng-repeat="(folder,selected) in foldersArray">
<label>
<input type="radio" name="folder[]" ng-model="selectedFolder" ng-change="selectedFolderName(folder)">{{folder}}</label>
</li>
$scope.foldersArray = ['Folder1', 'Folder2', 'Folder3'];
$scope.foldersArrayNew = {};
for(var i = 0; i < $scope.foldersArray.length;i++) {
$scope.foldersArrayNew[$scope.foldersArray[i]] = {selected: false};
}
$scope.foldersArray = $scope.foldersArrayNew;