ng-model n'est pas définie dans le contrôleur

Je suis en utilisant ionique et j'ai l'affichage suivant:

<ion-view hide-nav-bar="true" ng-controller="loginController" class="login-view">
  <ion-content class="padding">

    <div class="row row-center">
      <div class="col">

        <div id="logo"></div>

        <form>
          <div class="list">
            <label class="item item-input">
              <input type="text" placeholder="Membership No" ng-model="membershipNo">
            </label>
            <label class="item item-input">
              <input type="password" placeholder="Password" ng-model="password">
            </label>
          </div>

          <button class="button button-block button-positive button-login" ng-click="login()">
            Login
          </button>
        </form>

      </div>
    </div>

  </ion-content>
</ion-view>

Et mon contrôleur:

app.controller('loginController', ['$scope', '$localstorage',
    function($scope, $localstorage) {

        $scope.membershipNo;
        $scope.password;

        $scope.login = function () {
            console.log("User logged in with membership no: " + $scope.membershipNo +
    "\n and password: " + $scope.password);
        }

    }
]);

Ce que je ne comprends pas, c'est que lorsque je clique sur le bouton, la fonction de connexion est appelé correctement. Aussi, si dans le contrôleur, je vais définir $scope.membershipNo à quelque chose comme "Banana Pancake", on fait des mises à jour.

Encore lorsque la fonction de connexion fonctionne en fait, est dit que membershipNo et le mot de passe ne sont pas définis. Je suis assez nouveau dans Angulaire Ionique et donc je sais que c'est probablement un n00b erreur...

Vous êtes de la liaison à un primitif. Ne pas le faire. codelord.net/2014/05/10/... (en gros, la valeur de membershipNo est passé par valeur, donc ce qui est changé, c'est pas la référence dans le contrôleur. Créer un Objet, quelque chose comme $scope.user = {} et passer ng-model="user.membershipNo", sinon Angulaire ne peut pas envoyer des données vers le contrôleur...)
double possible de Ng-model n'a pas de mise à jour de la valeur de contrôleur
Ce que @DRobinson dit. Vous pouvez éviter cela en utilisant controllerAs-syntaxe, également rendre votre code plus élégant et à l'avenir dans le processus 🙂
qui ne fonctionne que si rien entre les ngController et la ngModel crée un nouveau champ d'application. C'est une très mauvaise pratique. Vous voulez vraiment "points" dans votre ngModel, à chaque fois. Toujours. stackoverflow.com/a/17186640/624590 (Elle aussi de ne pas travailler pour le Doyen parce que ionContent crée un champ.)
J'ai déjà possédé un télé-portée comme un gamin, mais il n'a jamais vraiment pu voir de très loin. Elle avait l'air cool si debout dans ma chambre.

OriginalL'auteur Tiwaz89 | 2015-08-13