#angularjs #components #multi-select #bootstrap-multiselect
#angularjs #Компоненты #множественный выбор #bootstrap-множественный выбор
Вопрос:
У меня есть следующие значения:
campaign_sms_templates = [11,22];
и
templateSMSList = [
{"id":11, "name":"test"},
{"id":12, "name":"test 12"},
{"id":22, "name":"test 22"}
];
И код angular похож на:
<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];
Пожалуйста, дайте мне знать, если что-то нуждается в дополнительных разъяснениях.
Комментарии:
1. что ж, select работает именно так, не возражаете ли вы сопоставить свой массив с массивом объектов, прежде чем привязываться к view .
2. спасибо @supercool, только что решил проблему, потратив на это много часов: (пожалуйста, проверьте и поделитесь своим отзывом.
Ответ №1:
Потратив много времени на это, теперь, наконец, я решил эту проблему
<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>
Это кажется не очень хорошей практикой, но поскольку я хочу сохранять идентификаторы только в своих документах базы данных, я сделал это.
Приветствуются любые отзывы.
Ответ №2:
Использовать 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
, поскольку это не нужно и приведет к нарушению директивы.
Для получения дополнительной информации см.