Mam wybrany, który jest wypełniony liczbami całkowitymi

<select>
  <option>1</option>
  <option>2</option>
  <option>3</option>
  <option>4</option>
</select>

Powiedzmy, że mam zbiór obiektów

  $scope.myCollection = [{"Color":"Red", "id":1},{"Color":"Blue", "id":2},
  {"Color":"Green","id":3}]

Chciałbym, aby wybrać, który jest związany z liczbą przedmiotów w kolekcji

To może wyglądać na coś takiego

<select ng-model="$scope.myCollection.Count">
  <option>1</option>
  <option>2</option>
  <option>3</option>
  <option>4</option>
</select>

Zdaję sobie sprawę, że dodawanie opcji, takich jak mój przykład powyżej, nie jest tak naprawdę droga, ale dostaje moje pytanie.

0
user3648646 14 sierpień 2014, 21:35

4 odpowiedzi

Najlepsza odpowiedź

Możesz tego użyć

  <select ng-model="myCollection.length">
        <option ng-repeat="item in myCollection">{{$index+1}}</option>
    </select>

Demo na żywo tutaj http://jsfiddle.net/c5smqyj/7/

EDYTUJ:

Ma to problem z tym, że po wybraniu dowolnego elementu zmieni długość tablicy, która oczywiście nie chcesz. Najlepszym sposobem jest zachowanie zmiennej liczenia lub funkcji liczenia, która zwraca długość

0
coder 14 sierpień 2014, 18:31

Użyj PHP. Możesz robić dynamiczne formy. Można wyglądać tak:

<select>
<?php
    while ($i=0, $i < $scope.myCollection.count, $i++){
        echo "<option>{$i}</option>";
    }
?>
</select>
0
Ian 14 sierpień 2014, 17:42

Jest to zasadniczo takie samo, ale zamiast tego używa JavaScript.

function addOption(selectbox,text,value ){
    var optn = document.createElement("OPTION");
    optn.text = text;
    optn.value = value;
    selectbox.options.add(optn);
}

for (var i=0; i < someArray.length;++i){
    addOption(document.selectbox, someText, value);
}

Znalazłem całkiem dobre wyjaśnienie dynamicznych formularzy JavaScript tutaj.

0
Ian 14 sierpień 2014, 18:03

Możesz użyć ng-repeat, aby wiązać option do kolekcji

  <select>
   <option ng-repeat="item in myCollection">{{item.id}}</option>
  </select>  

Gdzie elementy kolekcji mają pola id z liczbą lub czymkolwiek, co chcesz wyświetlić w rozwijanej

0
Ron Harlev 14 sierpień 2014, 18:52