我可以获得ng-model的密钥而不是ng值的值吗?

时间:2017-06-06 06:21:01

标签: angularjs

我正在尝试根据数组设置一个无线电选择器,并将密钥而不是值返回给服务器。

这是数组:

$scope.customer_types = ['a', 'b', 'c', 'd', 'other'];

这是无线电选择器:

<label style="margin-right:15px"><input type="radio" ng-model="ctype" ng-value="customer_type" name="customer_type">{{customer_type}}</label>

现在$ scope.ctype将存储所选的客户类型并返回一个数字,例如,如果我选择other,它应该向服务器发送4。我可以为此做一个反向过滤器,但在我看来,如果我可以使用类似ng-value="customer_type[key]"的东西,那将会更容易......

3 个答案:

答案 0 :(得分:1)

ng-repeat="(customer_key,customer_type) in customer_types"

您需要在ng-repeat中分隔键和值。

答案 1 :(得分:1)

由于您希望密钥成为数组中元素的位置,因此您可以使用$index来获取所选的客户类型。

function MyCtrl($scope) {
  $scope.customer_types = ['a', 'b', 'c', 'd', 'other'];
  $scope.selectedType = function(index) {
    $scope.ctype = index;
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<body ng-app ng-controller="MyCtrl">
  <div ng-repeat="customer_type in customer_types">
    <label style="margin-right:15px">
    <input type="radio" ng-value="$index" name="customer_type" ng-model="ctype" ng-click="selectedType($index)">{{customer_type}}</label>
  </div>

  Selected Customer type : {{ctype}}
</body>

答案 2 :(得分:0)

在customer_types中使用ng-repeat =“(key,customer_type)”并将单选按钮更改为:

<label style="margin-right:15px"><input type="radio" ng-model="ctype" ng-value="key" name="customer_type">{{customer_type}}</label>