2 votes

ng-model from select is undefined

J'ai un select box en html avec des options générées par un ng-repeat.

<select ng-model="pageId" ng-change="setFacebookPage()">
    <option ng-repeat="page in pages" ng-value="page.id"> {{page.name}}</option>
</select>

Cela fonctionne. La valeur et les options sont affichées correctement. Mais je veux obtenir la valeur de pageId dans ma fonction setFacebookPage() et c'est là que ça se passe mal, parce que pageId n'est pas défini dans le contrôleur !

$scope.setFacebookPage = function(){
    console.log("setFacebookPage", $scope.pageId);
}

Mais lorsque je modifie la valeur de pageId, je peux voir sa valeur avec {{pageId}}.

J'ai essayé de donner sa valeur en tant que paramètre dans la fonction, comme par exemple setFacebookPage(pageId) mais cela me donne aussi un undefined.

Quelle en est la raison et comment puis-je résoudre ce problème ?

2voto

Nikhil Aggarwal Points 21966

Il y a de petites erreurs dans votre code.

  • Utilisation select élément
  • Les virgules entre les attributs ne sont pas autorisées

Mettez donc votre code à jour comme suit

 <select ng-model="pageId" ng-change="setFacebookPage()">
     <option ng-repeat="page in pages" ng-value="page.id"> {{page.name}}</option>
 </select>

Vous pouvez modifier aquí

0voto

Sajeetharan Points 108195

Je pense que vous avez besoin

 <select ng-model="pageId" ng-change="setFacebookPage()">
      <option ng-repeat="page in pages" ng-value="page.id"> {{page.name}}</option>
 </select>

au lieu de

<input type="select" ng-model="pageId", ng-change="setFacebookPage()">
    <option ng-repeat="page in pages" ng-value="page.id"> {{page.name}}</option>

DEMO

var app = angular.module('demo', []);

app.controller('myCtrl', function($scope) {
    $scope.pages = [{"id" : 1, "name" : "sachin"}, {"id" : 2, "name" : "sourav"}];
  $scope.setFacebookPage = function(){
    console.log( $scope.pageId);
}

});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

  <body ng-app="demo" ng-controller="myCtrl">
    <select ng-model="pageId" ng-change="setFacebookPage()">
      <option ng-repeat="page in pages" ng-value="page.id"> {{page.name}}</option>
    </select>
  </body>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X