ng-model 不适用于 select

ng-model not working with 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

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

编辑:这是你的 plunker

的工作 select
 <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 add track by 以帮助angular识别对象的唯一性

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

ng-模型不适合 commInfo 列表中的任何模型。 这是您的解决方案。

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