使用ngModel的选择框不会填充选定的值

时间:2016-02-23 08:51:45

标签: angularjs

我有一个JSON响应数据,这是一个代表国家代码和描述的数组

 {"codeDescList":[{"desc":"Aruba"}],"codeValueCode":"ABW"},
 {"codeDescList":[{"desc":"Afghanistan"}],"codeValueCode":"AFG"},     
 {"codeDescList":[{"desc":"Angola"}],"codeValueCode":"AGO"},
 {"codeDescList":[{"desc":"Anguilla"}],"codeValueCode":"AIA"},
 {"codeDescList":[{"desc":"Åland Islands"}],"codeValueCode":"ALA"},  
 {"codeDescList":[{"desc":"Albania"}],"codeValueCode":"ALB"}

我将上述数组存储在angularJS范围对象中,如下所示

  $scope.codeValueData = response.data;

我为国家/地区创建了选择框

 <div class="form-group">
      <select ng-model="profileBizObj.preferredAddress.countryCode" ng-options="codeValue.codeDescList[0].desc for codeValue in codeValueData track by codeValue.codeValueCode">
    </select>
 </div>

正确创建选择框,如下所示

<option value="ABW">Aruba</option>
<option value="AFG">Afghanistan</option>
<option value="AGO">Angola</option>
<option value="AIA">Anguilla</option>
<option value="ALA">Åland Islands</option>
<option value="ALB">Albania</option>

我的代码的问题是如果profileBizObj.preferredAddress.countryCode指的是值&#34; AGO&#34;选择框没有显示国家&#34;安哥拉&#34;。选择框显示为空白。

我是angularJS的新手。请帮助解决此问题。谢谢

3 个答案:

答案 0 :(得分:0)

使用ng-repeat可以更轻松地完成您尝试做的事情。试试这个:

<select ng-model="profileBizObj.preferredAddress.countryCode">
      <option ng-repeat="item in codeValueData" value="{{item.codeValueCode}}">
           {{item.codeDescList[0].desc}}
      </option>
</select>

这是一个工作小提琴:http://jsfiddle.net/5s0b0jnz/

答案 1 :(得分:0)

写下面的select语句对我有用

 <select ng-model="profileBizObj.preferredAddress.countryCode" ng-options="codeValue.codeValueCode as codeValue.codeDescList[0].desc for codeValue in codeValueData">

选择框填充为

<option value="0">Aruba</option>
<option value="1">Afghanistan</option>
<option value="2">Angola</option>
<option value="3">Anguilla</option>
<option value="4">Åland Islands</option>
<option value="5">Albania</option>

和Selectiong Angola将“AGO”存储在模型“profileBizObj.preferredAddress.countryCode”中,这正是我所需要的。

谢谢大家的帮助

答案 2 :(得分:-1)

您的ng-options为sap.m.DatePicker,表示使用ng-options="codeValue.codeDescList[0].desc for codeValue in codeValueData track by codeValue.codeValueCode">将绑定到模型,codeValue作为显示值。因此,当您的模型值为...desc时,它不能被引用到codeValueData中的某个对象。

您应该使用以下选项设置AGO之类的选项值:

AGO

然后ng-options="codeValue.codeValueCode as codeValue.codeDescList[0].desc for codeValue in codeValueData track by codeValue.codeValueCode"> 将应用于您的模型。反之,对于某些模型值,如codeValueCode,将选择相关选项。