Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有对象数组的ngOptions不设置第一个值_Javascript_Angularjs_Ng Options_Angularjs Ng Options - Fatal编程技术网

Javascript 具有对象数组的ngOptions不设置第一个值

Javascript 具有对象数组的ngOptions不设置第一个值,javascript,angularjs,ng-options,angularjs-ng-options,Javascript,Angularjs,Ng Options,Angularjs Ng Options,我有一个具有以下格式的对象数组: [ {key: 'SC', name: 'Santa Catarina'}, {key: 'SP', name: 'São Paulo'}, {key: 'RJ', name: 'Rio de Janeiro'} ] 我想使用select和ng选项来显示这些值: <select ng-model="vm.state" ng-options="state.name for state in vm.states"> </sel

我有一个具有以下格式的对象数组:

[
  {key: 'SC', name: 'Santa Catarina'},
  {key: 'SP', name: 'São Paulo'},
  {key: 'RJ', name: 'Rio de Janeiro'}
]
我想使用select和ng选项来显示这些值:

<select ng-model="vm.state"
    ng-options="state.name for state in vm.states">
</select>
但是,如果vm.state已经有一个值,则select不会以选中该值开始。有人知道如何做到这一点吗


谢谢

必须自己设置,比如

$scope.states=[...]
$scope.state=$scope.states[0]

必须自己设置,比如

$scope.states=[...]
$scope.state=$scope.states[0]

首先,您必须自行设置它,因为vm.state将从您的vm.states获取值。您可以使用ng init进行设置

  <select ng-model="vm.state"
        ng-options="state.name for state in vm.states" ng-init="vm.state = $scope.states[0]">
    </select>

首先,您必须自行设置它,因为vm.state将从您的vm.states获取值。您可以使用ng init进行设置

  <select ng-model="vm.state"
        ng-options="state.name for state in vm.states" ng-init="vm.state = $scope.states[0]">
    </select>
在本例中,您可以使用TrackBy,从某个ajax调用中检索所选对象

<select ng-model="vm.state"
      ng-options="state.name for state in vm.states track by state.key">
</select>
注意:如果在ng选项表达式中使用“选择为”,则“跟踪方式”将不起作用`

在本例中,您可以使用TrackBy,从某个ajax调用中检索所选对象

<select ng-model="vm.state"
      ng-options="state.name for state in vm.states track by state.key">
</select>
注意:如果在ng选项表达式中使用“选择为”,则“跟踪方式”将不起作用`


该值是从服务中检索到的,如果不进行迭代,我不知道索引。这就是我试图避免的。你可以过滤你的状态,获取索引并设置索引。vm.states.filterfunctionstate,index,self{ifvalueFromService==state{vm.state=self[index];}}这个值是从一个服务中检索到的,我不迭代就不知道索引。这就是我试图避免的。你可以过滤你的状态,获取索引并设置索引。vm.states.filterfunctionstate,index,self{ifvalueFromService==state{vm.state=self[index];}}我必须迭代才能找到所需对象的索引。难道没有更好的解决方案吗?我必须迭代才能找到我想要的对象的索引。难道没有更好的解决办法吗?这正是我需要的!谢谢大家!@很高兴知道这一点。谢谢:这正是我需要的!谢谢大家!@很高兴知道这一点。谢谢: