2015-04-07 11 views
6

Sto sviluppando un'applicazione con Ionic e AngularJS. Non riesco a capire come ottenere valore dell'opzione selezionataAngularJS ottiene l'elemento selezionato nell'ambito

controller

.controller('TestCtrl', function($scope, $options) { 
    $scope.options = [ 
     { id: 0, label: '15', value: 15 }, 
     { id: 1, label: '30', value: 30 }, 
     { id: 2, label: '60', value: 60 } 
    ] 

    $scope.countSelector = $scope.options[0]; 

    $scope.changeCount = function(obj){ 
     obj = JSON.parse(obj); 
     console.log(obj) 
     console.log(countSelector) 
     $options.set('productCountPerPageValue', obj.value); 
     $options.set('productCountPerPage', obj.id); 
    }; 
    ... 
}) 

Template

<ion-list ng-controller="TestCtrl"> 

    <label class="item item-input item-select"> 
     <div class="input-label"> 
      {{countSelector}} 
     </div> 
     <select ng-model="countSelector" ng-change="changeCount('{{countSelector}}')" ng-options="opt as opt.label for opt in options"> 
     </select> 
    </label> 

</ion-list> 

console.log (obj) valore restituiscono sempre selezionato in precedenza

console.log (countSelector) Restituisce sempre default va lue (se impostato) o indefinito

risposta

5

Quando si esegue select ng-model="countSelector", si sono vincolanti il ​​vostro prescelto per $scope.countSelector

Quindi, all'interno del controllore, se si vuole avere un accesso al vostro valore selezionato, è possibile utilizzare il seguente:

$scope.countSelector 

edit:

base alle vostre esigenze, si potrebbe desiderare di avere direttamente il valore all'interno $ scope.countSelector. Per fare ciò, è possibile adattare i vostri NG-opzioni al seguente:

ng-options="opt.id as opt.label for opt in options" 
+1

http://jsfiddle.net/556GL/40/ –

2

Si passa nella versione stringa del countSelector alla funzione ng-cambiamento. Se si guarda il codice HTML che appare così:

<select ng-model="countSelector" 
        ng-change="changeCount('{&quot;id&quot;:1,&quot;label&quot;:&quot;30&quot;,&quot;value&quot;:30}')" 
        ng-options="opt as opt.label for opt in options" class="ng-valid ng-dirty"> 

È tecnicamente possibile passare il countSelector nella vostra funzione non usando un'espressione:

<select ng-model="countSelector" ng-change="changeCount(countSelector)" ng-options="opt as opt.label for opt in options"> 

http://jsfiddle.net/r2zgmgq1/

Come @Deblaton Jean- La risposta di Philippe spiega che hai accesso a questo tramite l'oscilloscopio, quindi non è davvero necessario.

Problemi correlati