0

Я в настоящее время angularjs выбрать с нг-вариантов с помощью следующего кода:Angularjs пустой выберите селектор

<select ng-model="vm.selectedship" ng-change="vm.updateShip()" data-ng-options="ship as ('ship' + ' is ready (' + ship.currentlocation + ')') for ship in vm.readyships"> 

производит этот производственный код:

<select class="ng-valid ng-dirty ng-touched" data-ng-options="ship as ('ship' + ' is ready (' + ship.currentlocation + ')') for ship in vm.readyships"> 
<option label="" selected="selected" value="?"> 
     </option> 
    <option label="ship is ready (New york)" value="0"> 
     ship is ready (New york) 
    </option> 
    <option label="ship is ready (City2)" value="1"> 
     ship is ready (City2) 
    </option> 
    <option label="ship is ready (City3)" value="2"> 
     ship is ready (City3) 
    </option> 
    <option label="ship is ready (City24)" value="3"> 
     ship is ready (City24) 
    </option> 
    <option label="ship is ready (City24)" value="4"> 
     ship is ready (City24) 
    </option> 
</select> 

, но, когда им выбора любого из вариантов , выбранный "окно" остается пустым, как этот

enter image description here

В: Как это сделать, текст находится внутри селектора ?, и как я могу удалить пустую опцию?

EDIT:

В настоящее время им с помощью vm.selectedship, чтобы получить всю собственность выбранного судна. Если что-то здесь необходимо для изменения, им нужно выбрать корабль для vm.property как-то иначе.

+1

заготовка будет удалена только если значение уже 'нг-model' в противном случае добавить свой собственный по умолчанию' '

+0

Можете ли вы предоставить реализацию метода «updateShip»? Мое первое предположение заключается в том, что метод ng-change, вероятно, возится с вашими кораблями. – nubinub

+0

@nubinub и вы правы :). – maria

ответ

1

Причина, по которой вы видите пустое значение при выборе параметра, заключается в том, что вы используете строку для псевдонима, а не для свойства. Поэтому ng-model не может найти свойство для отображения. Решение вашей проблемы вместо создания строки «на лету» для отображения, создайте свойство DisplayText для каждого объекта в контроллере.

HTML

<select ng-model="vm.selectedship" ng-change="vm.updateShip()" 
data-ng-options="ship as ship.DisplayText 
for ship in vm.readyships"> 

JS

_.each(vm.readyships, function (ship) { 
_.extend(ship, { DisplayText: "ship is ready (" + ship.currentlocation + ")" }); 
}); 
+0

ничего не меняется. обновленный вопрос – maria

+0

Можете ли вы создать плункер? – gilango

+0

My mistanke .it do works :) Можете ли вы также spoonfeed мне, как я могу выбрать при загрузке или удалить пустую опцию? :) – maria

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