将 ng 模型数组值与所选选项的 ng 选项对象映射



>我有以下值:

campaign_sms_templates = [11,22];

templateSMSList = [
{"id":11, "name":"test"},
{"id":12, "name":"test 12"},
{"id":22, "name":"test 22"}
];

角度代码是这样的:

<select multiple="multiple"
ng-model="campaign_sms_templates"
ng-options="value as value.name for value in templateSMSList track by value.id">
</select>

但在渲染时不会选择值。当我使用以下方式更改campaign_sms_templates参数值时:

campaign_sms_templates = [ {"id":11}, {"id":22} ];

它作为对象匹配工作,并在渲染时显示选定的值。

任何人都可以帮忙,我如何使用这些值呈现选定的选项:

campaign_sms_templates = [11,22];

如果有什么需要更多澄清的,请告诉我。

在花了很多时间之后,现在我终于解决了这个问题

<select multiple="multiple" ng-change="save(campaign_sms_templates)" ng-model="campaign_sms_templates">
<option value=[[field.id]] ng-repeat="field in templateSMSList" ng-selected="campaign_sms_templates.indexOf(field.id)!==-1">[[field.name]]</option>
</select>

这似乎不是一个好的做法,但由于我只想将 id 保存在我的数据库文档中,所以我这样做了。

欢迎任何反馈。

使用value.id as value.name for value

<select multiple="multiple"
ng-model="campaign_sms_templates"
ng-options="value.id as value.name for value in templateSMSList">
</select>

还要省略track by expression,因为它不是必需的,并且会破坏指令。

有关详细信息,请参阅

  • AngularJS ng-options 指令 API 参考 -select astrack by.

最新更新