AngularJS ng-muligheder, der ikke rendering værdier

Hvordan kan jeg gøre værdien af følgende muligheder listen?

$scope.limits = [ {value:  '5', text: 'Afficher 5 par page'},
                  {value: '10', text: 'Afficher 10 par page'},
                  {value: '15', text: 'Afficher 15 par page'},
                  {value: '20', text: 'Afficher 20 par page'}
                ];

<select id="limitType" name="limit" ng-model="limit" ng-options="limit.value as limit.text for limit in limits"></select> enregistrement par page

Forventede resultat (forventet værdi=”grænse.værdien”:

<select ng-options="option.value as option.text for option in limits" ng-model="limit" id="limitType" class="ng-pristine ng-valid">
    <option value="5" selected="selected">Afficher 5 par page</option>
    <option value="10">Afficher 10 par page</option>
    <option value="15">Afficher 15 par page</option>
    <option value="20">Afficher 20 par page</option>
</select>

Resultat:

<select ng-options="option.value as option.text for option in limits" ng-model="limit" id="limitType" class="ng-pristine ng-valid">
    <option value="0" selected="selected">Afficher 5 par page</option>
    <option value="1">Afficher 10 par page</option>
    <option value="2">Afficher 15 par page</option>
    <option value="3">Afficher 20 par page</option>
</select>

OriginalForfatteren Habib MAALEM | 2013-01-20

4 svar

  1. 20

    Den ng-options direktiv ikke har set den value attribut på <options> elementer. Det er altid bruger en sekvens.

    Hjælp limit.value as limit.text for limit in limits betyder:

    • Indstille <option>‘s label, som limit.text
    • Gemme limit.value værdi i at vælge ‘ s ng-model

    Check dette rode: http://jsfiddle.net/bmleite/k58Hw/

    Denne adfærd gør det muligt at bruge enhver type af objekt skal du vælge valg, ikke kun strenge og tal.
    Det hjalp en masse! Men hvad nu, hvis jeg ønsker at gemme værdien i databasen via formular?

    OriginalForfatteren bmleite

  2. 3

    At gøre det arbejde, du (vi) er nødt til at ændre den måde, vi afleverer data til serveren.

    Browseren er “dum”, og det tager ikke bekymrer sig om AngularJS, jQuery eller andre JavaScript-framework laver magi i koden bag. Hvis feltet indeholder indeks værdi i stedet for den reelle værdi, vil browseren sende indekset værdi til serveren.

    Hvis du ønsker at gøre det arbejde, du enten nødt til at bruge ng-gentag i forbindelse med option tag til at gengive korrekte værdier, eller til at sende data ved at kalde .post metode fra AngularJS controller.

    Dette er grunden til, at jeg elsker & hader AngularJS.

    Jeg tror, det store spørgsmål, som du kæmper med, her forsøger at opretholde en javascript-MVC i et program, som du ikke kan acceptere som en SPA. Hvis du var til at indsende din form som en kantede model med $http.post eller $http.get ville du ikke have de problemer

    OriginalForfatteren user2560550

  3. 2

    Jeg klar over at dette er et gammelt spørgsmål, men jeg havde et problem med dette også. Min simple løsning på dette var at skabe et hidden input og binde det ved hjælp af ngModel med at vælge. Så når du gør det normale form send, send det skjulte input. Håber det hjælper.

    OriginalForfatteren wlingke

  4. 0

    for en alternativ tilgang, vi kan bruge ng-gentag

    <select  ng-model="limit" id="limitType" class="ng-pristine ng-valid" >
     <option ng-repeat="option in limits " value="{{option.value}}" >
      {{option.text}}
     </option>
    </select>

    OriginalForfatteren Ejo V Joy

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *