在 Angular 中使用两个数组时在选择框中标记默认值

Marking default value in Selectbox while using two array in Angular

我使用从外部源获取的对象构建了一个控件。

var field= {
          "attributeName": "Country",
          "dbColumnName": "location",
          "fieldType": "DROP_DOWN",
          "optionName": ['US', 'AUS', 'UK', 'IND'],
          "optionValue": ['123','456','789','0123']
        }

控件是从上面的对象创建的

<select name="{{field.attributeName}}" ng-model="formControlsValues[field.dbColumnName]"/>
   <option ng-repeat="item in field.optionName track by $index" ng-value="field.optionValue[$index]">
       {{item}}
   </option>
</select>

field.optionName 是一个数组,item 将是一个显示值。 field.optionValue[$index] 是为值映射的另一个数组。

在Angular中使用以上两个数组时在选择框中标记默认值, 如何实现?

如果我没记错的话,你想在 select 输入中设置一个默认值。 坚持你的代码,我设置了一个 default_index 值并用它来初始化输入和选项。

<select name="{{field.attributeName}}" 
  ng-init="field.itemsel = field.optionValue[default_index]" 
  ng-model="field.itemsel">
   <option ng-repeat="item in field.optionName track by $index" 
   ng-selected="default_index == $index"
   ng-value="field.optionValue[$index]">
       {{item}}
   </option>
</select>
<p>
  OptionValue to be used for whatever: {{field.itemsel}} 
</p>

请检查我创建的 jsfiddle

此外,我会使用 ng-options 重写您的代码(如 Angular select input documentation 中所建议):

<select name="{{field.attributeName}}" 
  ng-options="index as item for (index, item) in field.optionName" 
  ng-init="indexselected='1'"
  ng-model="indexselected">
</select>
<p>Selected index: {{indexselected}}</p>
<p>Option Value: {{field.optionValue[indexselected]}}</p>

检查我创建的另一个 jsfiddle。 如果您的疑惑不一样,请指出得更清楚。