2015-03-25 2 views
1

У меня есть это в HTMLУстановленное значение по умолчанию в <select> с угловыми нг-вариантов, возможно, используя нг-Init

<select ng-model="inventory.condition" 
     ng-init="inventory.condition = con" 
     ng-options="con.name for con in conditions" 
    <option >-- choose condition --</option> 
</select> 
{{inventory.condition}} 

О Js угловом контроллера:

$scope.conditions = [ 
     {"name":"New","id":101}, 
     {"name":"Used","id":102}, 
     {"name":"Like new","id":103}, 
     {"name":"Not Working","id":104} 
] 
$scope.inventory.condition = {"name":"Used","id":102}; 

SELECT, Заселите работает отлично, и если Я выбираю элемент в списке, который правильно устанавливает ng-модель, и Htlm корректно отображает выбранную модель (я хочу получить полную модель, а не только значение «id»), но я не могу установить значение по умолчанию при создании список.

Идея - получить модель (объект js), которая содержит значение по умолчанию (что действительно происходит из запроса html из WS, который ранее сохранялся в БД) и выбрать элемент по умолчанию со значением из модели, и если пользователь выбирает новый элемент, он может изменять одну и ту же модель (что я буду обновлять/повторять позже).

ответ

0

Дело в том, что $scope.inventory.condition должен быть $scope.conditions элементом массива, а два объекта равны, только если они являются одним и тем же объектом. Поэтому вы не можете просто установить $scope.inventory.condition = {"name":"Used","id":102};: событие, хотя {"name":"Used","id":102} выглядит как второе значение массива, в действительности они не равны, поэтому Angular не будет устанавливать его как значение по умолчанию.

Вы должны установить модель значения, как это:

$scope.conditions = [ 
    {"name":"New","id":101}, 
    {"name":"Used","id":102}, 
    {"name":"Like new","id":103}, 
    {"name":"Not Working","id":104} 
]; 
$scope.inventory.condition = $scope.conditions[1]; 
+0

Ohhh .. спасибо @dfsq. Вы абсолютно правы, поэтому для завершения моего окончательного решения я использую фильтр $, чтобы получить правильный элемент из массива $ scope.conditions и установить его в ng-модель. Я уверен, что есть другие способы найти его, но если есть проблемы с этим, дайте мне знать, еще раз спасибо: '$ scope.inventory.condition = $ filter ('filter') ($ scope.conditions, {id: $ scope.inventory.condition.id}, true) [0]; ' –