![](/img/trans.png)
[英]how to make an object of array from a list of arrays. (Using angularjs)
[英]how to make array using angularjs?
我有带有checkbox.when的主题列表。当用户提交选定的主题时,我会很正常,但是如果用户选择了3个主题(泰米尔语,科学,英语),我需要像这样声明:var data = {“” Subject“:[ {subject0:Tamil,subject1:Science,subject3:English}]}有人帮我制作了。 我附上了我的HTML和控制器
.controller('TestController', ['$scope','$http','$window','$location', function($scope,$http,$window,$location,$stateProvider) { var serverData = ["Tamil", "Science", "English","computer"]; $scope.items = []; for (var i = 0; i < serverData.length; i++) { var modal = { name: serverData[i], selected: false }; $scope.items.push(modal); } $scope.submit = function() { var checkedItems = []; for (var i = 0; i < $scope.items.length; i++) { if ($scope.items[i].selected) { checkedItems.push($scope.items[i].name); } } console.log(checkedItems); //Expectation: //var data = { //"Subject" :[{subject0:Tamil,subject1:Science,subject3:English}] //} }]); }
<div ng-controller="TestController"> <ul ng-repeat="item in items"> <li class="item item-checkbox"> <label class="checkbox checkbox-energized"> <input type="checkbox" ng-model="item.selected" > </label> {{item.name}} </li> </ul> <input type="button" name="submit" value="submit" ng-click="submit()"/> </div>
您可以简单地这样做。
$scope.submit = function() {
var checkedItems = [], data = {};
for (var i = 0; i < $scope.items.length; i++) {
if ($scope.items[i].selected)
checkedItems["Subject" + i] = $scope.items[i].name;
}
data["Subject"] = checkedItems;
console.log(data); // {"Subject" :[{subject0:Tamil,subject1:Science,subject3:English}]}
}
请尝试以下方法:
$scope.submit = function()
{
var checkedItems = [], data = [];
for (var i = 0; i < $scope.items.length; i++) {
if ($scope.items[i].selected)
checkedItems.push("Subject"+i, $scope.items[i].name);
}
data.push("Subject", checkedItems);
}
我让它更具角度
<div ng-controller="ControllerZero">
{{data.Subject}}
<ul ng-repeat="item in serverData">
<li class="item item-checkbox">
<label class="checkbox checkbox-energized">
<input type="checkbox" ng-model="$parent.subject[$index]">
</label>{{item}}</li>
</ul>
<input type="button" ng-click="showData()" value="show data">
</div>
javascript:
var myModule = angular.module('myModule', []);
function ControllerZero($scope, Timer) {
$scope.serverData = ["Tamil", "Science", "English", "computer"];
$scope.subject = [];
$scope.data = {'Subject' : [{}]};
$scope.showData = function() {
var count = 0;
$scope.data.Subject[0] = {};
angular.forEach($scope.subject, function(value, key) {
if(value === true) {
$scope.data.Subject[0]['subject' + count] = $scope.serverData[key];
count++;
}
})
}
}
ControllerZero.$inject = ['$scope'];
小提琴链接: http : //fiddle.jshell.net/55zjjyhk/
或者您可以通过放置$ watch使其变为实时,但似乎没有必要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.