2017-01-05 1 views
0

предположить, что это мой контроллер:Как установить один из элементов по умолчанию в ng-options?

function MainController(someService) { 
    var vm = this; 
    // remote call to load items 
    var vm.items = someService.loadItems(); 
    /* 
    * item's are something like this: 
    * [ 
    *  { 
    *   "id" : 15, 
    *   "topic" : "مرکز شهید بلباسی", 
    *   "default" : false 
    *  }, { 
    *   "id" : 14, 
    *   "topic" : "مرکز شهید کاوه", 
    *   "default" : false 
    *  }, { 
    *   "id" : 13, 
    *   "topic" : "مرکز شهید زین الدین", 
    *   "default" : false 
    *  }, { 
    *   "id" : 4, 
    *   "topic" : "مرکز شهید حسین همدانی", 
    *   "default" : true 
    *  } 
    * ] 
    */ 
} 

и это выберите тег:

<select ng-model="vm.searchFilter.itemId" 
     ng-options="item.id as item.topic for item in vm.items"> 
    <option value=""></option> 
</select> 

сейчас, я хочу, чтобы установить выбранную опцию пункта, что это default свойство верно и не хочу использовать для этой цели ng-model. Как я могу это сделать?

+0

Не могли бы вы сделать plunker? –

+2

«Я не хочу использовать' ng-model' ** ПОЧЕМУ **? Вот как он должен был функционировать. – Claies

+0

Вы должны указать, почему вы не хотите использовать ng-model, тогда только мы можем вам помочь – LINTUism

ответ

0

Вы можете попробовать передать параметры фильтру.

ng-options="item.id as item.topic for item in vm.items | filter:item.default=='true'" 

Тогда вы должны получить все варианты, где опция истинна.

Edit:

установить этот параметр в качестве значения по умолчанию, вы должны повторить с опцией тега и использовать ng-selected установить опцию по умолчанию. Вы можете попробовать что-то вроде этого:

<option ng-repeat="item in vm.items" value="..." ng-selected="item.default == 'true'">Default options</option> 
+0

таким образом могут быть показаны только те элементы, которые имеют значение 'default'' true', но я хочу показать все элементы и только автоматически установите выбранную опцию на элемент, значение 'default' которого равно' true', и пользователь может изменить значение выбора и выбрать другую опцию. –

+0

это очень хороший трюк, и это работает, когда я удаляю 'ng-model' из select, но я не хочу этого, потому что 'ng-model' и' ng-selected' делают co nflict. также проверьте мое обновление на вопрос –

0

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

<select ng-model="defaultVal" 
     ng-options="item.id as item.topic for item in vm.items"> 
    <option value=""></option> 
</select> 

А теперь выберите значение по умолчанию в контроллере

$scope.defaultVal = items[3].id; 
Смежные вопросы