AngularJS:使用ng选项选择-如何将值作为整数传递?

AngularJS:使用ng选项选择-如何将值作为整数传递?,angularjs,select,ng-options,Angularjs,Select,Ng Options,我的选择表格有问题。当我选择任何选项时,传递的值是字符串类型,而不是数字类型。这是我用于ng repeat的对象: $scope.apples ={ 0:'Apple0', 1:'Apple1', 2:'Apple2', 3:'Apple3' }; 这是我的选择,它传递字符串,而不是数字: <select ng-model="test" ng-options="key as value for (key,value

我的选择表格有问题。当我选择任何选项时,传递的值是字符串类型,而不是数字类型。这是我用于ng repeat的对象:

$scope.apples ={
         0:'Apple0',
         1:'Apple1',
         2:'Apple2',
         3:'Apple3'
};
这是我的选择,它传递字符串,而不是数字:

 <select ng-model="test" ng-options="key as value for (key,value) in apples"></select>


有什么想法吗?

在我看来,每次迭代对象字段时,都会出现设计问题。使用数组:

$scope.apples = [
  {
    id: 0,
    name: 'Apple0'
  },
  {
    id: 1,
    name: 'Apple1'
  },
  ...
];
并且认为:

ng-options="apple.id as apple.name for apple in apples"

非常简单的方法是将字符串实际转换为数字(注意,
+
运算符):

也可以使用数组作为数据结构:

$scope.apples = [
    'Apple0',
    'Apple1',
    'Apple2',
    'Apple3'
];
然后

ng-options="apples.indexOf(apple) as apple for apple in apples"

这很有效。我知道这是离题的,但你能解释一下这种设计相对于原始设计有什么好处吗?顺序是可以预测的,而使用对象时则不是。您还可以对数组进行排序(按ID,或者更现实地说,按名称):
apple.ID作为apple.name作为apple中apple的名称| orderBy:'name'
。这很有意义。谢谢
ng-options="apples.indexOf(apple) as apple for apple in apples"