2017-01-05 1 views
0

supposer que c'est mon contrôleur:comment définir l'un des éléments par défaut dans 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 
    *  } 
    * ] 
    */ 
} 

et c'est balise select:

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

maintenant, je veux définir l'option sélectionnée au point qu'il est default la propriété est vrai et ne veulent pas pour utiliser ng-model de select tag à cette fin. Comment puis je faire ça?

+0

Pourriez-vous s'il vous plaît faire un plunker? –

+2

"Je ne veux pas utiliser' ng-model' ** POURQUOI **? Voilà comment il était prévu de fonctionner – Claies

+0

Vous devriez mentionner pourquoi vous ne voulez pas utiliser ng-model, alors seulement nous pouvons vous aider – LINTUism

Répondre

0

Vous pouvez essayer de rediriger les options vers un filtre.

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

Ensuite, vous devriez obtenir toutes les options où l'option est vrai.

Edit:

pour définir cette option en tant que valeur par défaut, vous devez répéter avec l'étiquette d'option et utilisez la ng-selected pour définir l'option par défaut. Vous pouvez essayer quelque chose comme ça:

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

de cette manière seuls les items qui ont 'default' la valeur' true' peuvent apparaître dans select, mais je veux montrer tous les items et seulement Définir automatiquement l'option sélectionnée à l'élément dont la valeur 'default' est' true', et l'utilisateur peut changer la valeur de sélection et sélectionner une autre option –

+0

c'est très bon tour, et c'est un travail quand je supprime 'ng-model' de select, mais je ne veux pas ça parce que 'ng-model' et' ng-selected' font co nflict. Vérifiez également ma mise à jour à la question –

0

Pour avoir une option par défaut, assurez-vous que l'option particulière à définir dans le ng-model de l'étiquette select.

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

Et maintenant, une valeur par défaut dans le contrôleur

$scope.defaultVal = items[3].id;