将ng-model数组值与ng-options对象映射为所选选项

时间:2019-03-25 03:34:33

标签: angularjs components multi-select bootstrap-multiselect

我有以下值:

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];

请让我知道是否还有任何需要澄清的地方。

2 个答案:

答案 0 :(得分:0)

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

public object ChooseProperty((FooItem item,string property)pair){
    PropertyInfo prop=pair.item.GetType().GetProperty(pair.property);
    object value=prop.GetValue(item);
    return value;
}

这似乎不是一个好习惯,但是因为我只想将id保存在数据库文档中,所以我这样做了。

欢迎任何反馈。

答案 1 :(得分:0)

使用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,因为它会破坏指令。

有关更多信息,请参见