>我有以下值:
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 as
和track by
.