繁体   English   中英

如何使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM