2017-08-17 81 views
0

我遇到了AngularJS材料的网站,并与一些教程玩耍。关于复选框最后一个例子弄得我有点(this tutorial site)AngularJS复选框

<div flex="100" flex-gt-sm="50" layout="column"> 
    <div > 
    <fieldset class="standard"> 
     <legend>Using &lt;input type="checkbox"&gt;</legend> 
     <div layout="row" layout-wrap flex> 
     <div ng-repeat="item in items" class="standard" flex="50"> 
      <label> 
      <input type="checkbox" ng-checked="exists(item, selected)" 
        ng-click="toggle(item, selected)"/> 
      {{ item }} 
      </label> 
     </div> 
     </div> 
    </fieldset> 
    </div> 
</div> 

我想知道是否有可能来命名HTML复选框不同,如(A,B,C,..),但数量仍然工作( 1,2,3,...)在控制器?

angular.module('checkboxDemo2', ['ngMaterial']).controller('AppCtrl', function($scope) { 

$scope.items = [1,2,3,4,5]; 
    $scope.selected = []; 

    $scope.toggle = function (item, list) { 
    var idx = list.indexOf(item); 
    if (idx > -1) { 
     list.splice(idx, 1); 
    } 
    else { 
     list.push(item); 
    } 
    }; 

    $scope.exists = function (item, list) { 
    return list.indexOf(item) > -1; 
    }; 
}); 

回答

0

你的阵列,具有唯一的编号,因此NG-重复显示,数字

如果你想A,B,C ......,那么你的阵列应该像

$scope.items = [{name:'A',value:1},[{name:'B',value:2},[{name:'C',value:3},[{name:'D',value:4}]; 

您html复选框可能是

<input type="checkbox" ng-checked="exists(item, selected)" 
        ng-click="toggle(item, selected)"/> 
      {{ item.name }} 
+1

这个工作对我来说: 我只是想补充一点,我改变了语法的东西:$ scope.items = [{名称: 'A',值:1} ,{名称: 'B',值:2},{名称: 'C',值:3},{名称: 'd',值:4}]; – WirJun

0

您可以通过在控制器中创建一个函数来获取字母对应的字母项(对应于 一个到等)是这样的:

$scope.intToChar = function(int){ 
    return String.fromCharCode('A'.charCodeAt(0) + int - 1) 
} 

而在你的NG-重复,而不是显示{{item}}你只需要显示{{intToChar(item)}}

Here是工作plunker

0

您可以添加使用动态字符

angular.module("app",[]) 
 
.controller("ctrl",function($scope){ 
 

 
$scope.items = [1,2,3,4,5]; 
 

 
$scope.fullArr = $scope.items.map(o=>{ 
 
    return { 
 
     name : String.fromCharCode(64+o), 
 
     num : o 
 
    } 
 
}) 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script> 
 
<div ng-app="app" ng-controller="ctrl"> 
 
<div ng-repeat="item in fullArr" class="standard" flex="50"> 
 
      <label> 
 
      <input type="checkbox" name="{{item.name}}" ng-checked="exists(item, selected)" 
 
        ng-click="toggle(item, selected)"/> 
 
      {{ item.num }} 
 
      </label> 
 
     </div> 
 
</div>