2016-01-01 2 views
0

Я пытаюсь отобразить выбранные значения из мультиселекта как отдельные объекты в моем представлении, что означает, что выбранные значения появятся где-то еще в форме; фактический мультиселектор будет скрыт, ему нужно только отправить выбранные значения, чтобы они могли привязываться к серверу на основе viewmodel (ASP.NET MVC).Выбор не вставляется в AngularJS MultiSelect Binding

Это похоже на работу. Тем не менее, AngularJS будет префиксными идентификаторами «string:», поэтому я должен использовать track by. Если я это сделаю, многоселектор начнет действовать странно, то есть, если я выберу вариант, этот параметр будет немедленно отменен, если я не дважды нажму на эту опцию. Я не знаю, что там происходит.

Вот код на Plunker, у кого-нибудь есть идея, что мне не хватает?

ответ

1

Кажется, проблема с опцией ng-options (https://github.com/angular/angular.js/issues/6564).

Я также нашел некоторую информацию в angularjs документы:

«Будьте осторожны при использовании выбора, как и отслеживать с помощью в том же выражении.»

https://docs.angularjs.org/api/ng/directive/ngOptions

Я раздвоенный свой plunker и использовал <options> тег с нг-повторе вместо:

https://plnkr.co/edit/uH4hGgUGjvAxcBt3bViT?p=preview

+0

Два одинаково хорошо работающих ответа были жестким вызовом, я пошел с этим решением, потому что он был наименее инвазивным, спасибо большое! –

1

Проблема заключается с моделью value.id as value.name генератора, который был разбитой на некоторое время теперь , несмотря на то, что утверждает документация.

I have forked your plunkr и изменил select тег к этому: -

<select id="tracking" multiple="multiple" ng-model="vm.selected" 
    ng-options="value.name for value in vm.values track by value.id"> 

Если теперь осмотрите этот элемент в вашем браузере, вы увидите, нет нежелательной «строки:» префиксы на value атрибуты, которые option элементов.

Для вашего спокойствия я также написал функцию для извлечения значений, которые будут отправлены на сервер, если форма была отправлена.

Однако, как следствие моего изменения, элементы массива vm.selected больше не являются идентификаторами строки, а самими объектами. Поэтому не забудьте добавить .id для кодирования этих элементов массива ссылок, например. vm.selected[ i ].id вместо vm.selected[ i ]

+0

Итак, это действительно ошибка в Angular. Спасибо за справочную информацию и рабочее решение. Хотя я пойду со вторым предлагаемым решением, я приму некоторые изменения, внесенные вами в plunkr, поэтому я также проголосовал за этот ответ. –

Смежные вопросы