2016-11-23 1 views
0

J'ai créé des options de sélection avec ng-repeat, mais la fonction définie avec on-change n'est jamais appelée.ng-change ne fonctionne pas avec ng-repeat avec options mais fonctionne avec ng-options

<select> 
<option ng-model="level1Selected" ng-repeat="item1 in level1" ng-change="setLevel2()" value="{{item1}}">{{item1}}</option> 

Je recréée la même chose avec ng-options, et la fonction est appelée:

<select ng-options="item1 for item1 in level1" ng-model="level1Selected" ng-change="setLevel2()"></select> 

J'ai vérifié la documentation, et je ne vois aucune raison de cette différence. La variable level1 est un tableau de chaînes, donc je ne comprends pas pourquoi elles se comportent différemment.

La fonction est actuellement juste un espace réservé avec console.log:

$scope.setLevel2 = function() { 
    console.log("value: "); 
} 
+1

mettre 'ng-change' sur l'élément' select' pas 'option' puisque c'est la valeur' select' qui change – mic4ael

+1

'ng-change' fonctionnerait sur' select'/'input', il n'est pas prévu (jamais) de travailler sur la balise' option' –

Répondre

3

Si vous voulez faire que vous avez besoin de mettre ng-modèle et ng changement dans la balise select, essayez ceci:

<select ng-model="level1Selected" ng-change="setLevel2()"> 
    <option ng-repeat="item1 in level1" value="{{item1}}">{{item1}}</option> 
</select> 
+1

Il vous manque la balise de fermeture pour le