【问题标题】:how to make array using angularjs?如何使用angularjs制作数组?
【发布时间】:2015-08-24 17:26:41
【问题描述】:

我有带有复选框的主题列表。当用户提交选定的主题时,我得到了正确的结果,但如果用户选择了 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>

【问题讨论】:

  • 首先,把你的代码美化一点,太可怕了

标签: javascript jquery angularjs


【解决方案1】:

试试下面:

$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);
}

【讨论】:

    【解决方案2】:

    你可以这样做。

    $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}]}
    }
    

    【讨论】:

      【解决方案3】:

      我让它有点棱角分明

      <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 让它变成实时的,但似乎没有必要。

      【讨论】:

      • 我怎样才能获得选定的服务。如果我把 console.log($scope.subject) 我得到 Array [ true, true, true, true ] 像这样
      • 你做对了,就是$scope.object,如果你想选择服务作为数组,你必须把它放在另一个数组中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      • 2016-04-14
      相关资源
      最近更新 更多