2015-05-16 1 views
1

Я попытался решить эту проблему за час, ничего не нашел в Интернете. Это шаблон:ngOptions странное поведение при попытке использования ответа ресурса в качестве выбранного элемента

 <select 
      ng-model="user.platform_id" 
      ng-options="platform.id as platform.title for platform in platforms" 
      id="platform_id" class="form-control"> 
     </select> 

и это контроллер:

$scope.platforms = platformsEntity.query(); 
// Resource object coming from UI Router resolve, already fetched with user info 
$scope.user = userEntity; 

платформы ответ ресурсы возвращают следующий формат:

[ { id: 4, title: 'platform1'}, { id: 5, title: 'platform2' ] 

пользователя такого же, объект ресурс с платформа ID

{ id: 3, name: 'foo', platform_id: 5 } 

Таким образом, я могу видеть все платформы в окне выбора, но он не получает выбранный по значению ngModel (user.platform_id) Дело в том, что, когда я использую простой объект вместо ресурса:

$scope.platforms = platformsEntity.query(); 
$scope.user = { platform_id: 5 } ; 

It становится выбран правильно ...

Update

я копировал поведение я ищу в нг-повтора:

<select ng-model="user.platform_id" id="platform_id" class="form-control"> 
    <option 
     value="{{ platform.id }}" 
     ng-selected="user.platform_id == platform.id" 
     ng-repeat="platform in platforms" 
    >{{ platform.title }}</option> 
</select> 
+0

отлично подходит для меня: http://plnkr.co/edit/A9n3NuaB3dafutZuoPfZ?p=preview –

ответ

0

Речь идет не об использовании ресурса, проблема с программным выбором ng-опций заключается в том, что значение ng-model должно ссылаться на тот же объект, что и в ng-опциях. Чтобы инициализировать выделение, сначала убедитесь, что массив платформ заполнен (запрос может быть асинхронным?), Затем прокрутите их и установите объект id платформы по вашему выбору в качестве объекта platform_id пользователя.

0

Попробуйте что-нибудь подобное. Сообщите angular, что вы хотите trackvalue.

<select 
     ng-model="user.platform_id" 
     ng-options="platform.title for platform in platforms track by platform.id" 
     id="platform_id" class="form-control"> 
</select>