AngularJS ng-options créer de gamme
Je suis en train de créer un élément select a une liste de numéros de 1 à pages où les pages est une variable qui est le nombre de pages que j'ai. Ce que je ne sais pas comment faire c'est la structure de la ng-options expression qui va me donner les chiffres que j'ai besoin. Voici ce que j'ai jusqu'à présent
<select ng-model="page" ng-options="???"></select>
que dois-je mettre dans le ng-options expression pour créer mon sélectionnez comme
<select>
<option value="1">1</option>
...
<option value="35">35</option>
</select>
dois-je créer une fonction qui retourne un tableau de nombres et les utiliser, il y a en quelque sorte ou est-il un moyen plus facile de faire cela?
toute aide serait grandement appréciée.
Grâce
MODIFIER
Après la publication de ma question, j'ai pensé à une façon de le faire par la création d'une fonction appelée Gamme dans mon contrôleur qui prend deux nombres et retourne un tableau avec toutes les valeurs de cette gamme.
$scope.Range = function(start, end) {
var result = [];
for (var i = start; i <= end; i++) {
result.push(i);
}
return result;
};
puis dans le HTML, je n'ai
<select ng-name="page" ng-options="page for page in Range(1, pages)"></select>
Est-ce la façon la plus simple de le faire ou est-il un meilleur moyen?
- C'est un savant salon de truc, mais pourquoi ne pas simplement utiliser un code HTML d'entrée de type de numéro? Vous pouvez même spécifier une plage.
Vous devez vous connecter pour publier un commentaire.
Votre façon fonctionne très bien. Une autre option qui est venu à ma tête est d'utiliser un filtre, de sorte que vous n'avez pas à polluer votre contrôleur de Gamme.
JS:
HTML:
Exemple: http://jsfiddle.net/N3ZVp/1/
P. S. dans votre exemple, votre poste principal, vous n'avez pas mis
var
en face dei
. Donci
est déclarée comme une variable globale dans votre exemple.Une autre solution pour le garder dans votre modèle:
[].constructor
au lieu de la fantaisie "de la gamme" décideurs est soignée.S'il vous plaît ajouter ng-model, comme ci-dessous
Après cela, votre exemple de travail en jsfiddle
une autre approche en l'absence d'une boucle for est: est-ce
contrôleur:
vue de liaison:
Andy solution est grand, cependant, la gamme ne peut pas revenir en arrière. Voici la version améliorée:
Profiteurs martynas de réponse. Je l'ai modifié pour inclure la dernière valeur dans la gamme:
if(start===end) return [start];
En CoffeeScript:
Et le code HTML:
Ici est la gist avec le Javascript
Si vous voulez ajouter un espace réservé dans le sélectionner, puis utiliser la solution donnée ci-dessous. Vous devez d'abord définir le filtre comme ceci.