ng-model不能与select一起使用

时间:2016-03-04 08:50:00

标签: javascript angularjs angularjs-scope angularjs-ng-repeat html-select

这可能是一个重复的问题,但是在将另一个数组绑定到下拉列表时显示我的数据的默认值时卡住了。列表已填充,但加载后应显示的选定值未显示。

这是我的示例代码:

HTML:

<div ng-app="app">
<div ng-controller="myCntrl">
  <select class="form-control right" 
  ng-if="subscription.subscribedAddresses.ChannelType=='EMAIL'" 
  ng-model="subscription.subscribedAddresses.ChannelAddress" 
  ng-options="channel.ChannelAddress for channel in commInfo.emails track by channel.ChannelAddress" required>
  </select>
</div>

JS:

angular.module('app', [])
.controller('myCntrl', ['$scope', function($scope) {
$scope.commInfo = {
  "emails": [{
    "ChannelAddressId": 5000054652,
    "DeliveryChannel": "EMAIL",
    "ChannelType": null,
    "ChannelAddress": "ya_ajay@net.com"
  }, {
    "ChannelAddressId": 5000075277,
    "DeliveryChannel": "EMAIL",
    "ChannelType": null,
    "ChannelAddress": "yad_ay@ts.com"
  }, {
    "ChannelAddressId": 5000075278,
    "DeliveryChannel": "EMAIL",
    "ChannelType": null,
    "ChannelAddress": "yadav_aaj@gmail.com"
  }, {
    "ChannelAddressId": 5000075279,
    "DeliveryChannel": "EMAIL",
    "ChannelType": "UNKNOWN",
    "ChannelAddress": "test_ay@mail.com"
  }],
  "phones": [{
    "ChannelAddressId": 5000075390,
    "DeliveryChannel": "PHON",
    "ChannelType": "UNKNOWN",
    "ChannelAddress": "4561237895"
  }, {
    "ChannelAddressId": 5000075397,
    "DeliveryChannel": "PHON",
    "ChannelType": "UNKNOWN",
    "ChannelAddress": "7894561236"
  }]
};
$scope.subscription = {"serviceName":"RAM Month","subscribedAddresses":{"ChannelAddress":"yad_ajay@ts.com","ChannelType":"EMAIL"}};
}]);

这是Plunkr: Plunkr: Dropdown issue - Angularjs

2 个答案:

答案 0 :(得分:4)

代码对我来说似乎很好,但是你将subscription.subscribeAddresses.ChannelAddress初始化为“yad_ajay@ts.com”。我在你的commInfo中没有看到任何 yad_ajay@ts.com 。猜猜是问题。

编辑:这是你的选择的工作选择

 <select class="form-control right" 
  ng-if="subscription.subscribedAddresses.DeliveryChannel=='EMAIL'" 
  ng-model="subscription.subscribedAddresses" 
  ng-options="channel as channel.ChannelAddress for channel in commInfo.emails track by channel.ChannelAddressId" 
  required>
  </select>

更改:在ng-if

中将ChannelType更改为DeliveryCHannel

更改ng-options添加轨迹以帮助角度识别对象的单一性

工作人员: - http://plnkr.co/edit/LSbJ2RVRw9zJleSwP3YT?p=preview

答案 1 :(得分:0)

ng-model不适合commInfo列表中的任何模型。 在这里你的解决方案。

[Jsfiddle](https://jsfiddle.net/6b3ntn73/28/)