2016-10-04 1 views
0

So verwende ich ionische, um eine Hybrid-App zu bauen. Nur um klar zu sein, das funktioniert einwandfrei mit Android!Warum ist der Bereich nicht definiert in eckigen

Hier ist meine Login html:

.state('login', { 
     url: '/login', 
     templateUrl: 'templates/login.html', 
     controller: 'LoginCtrl' 
}) 

und wenn ich Zugriff zum Beispiel $scope.email:

<body ng-app="starter"> 
    <head> 
     <script src="phonegap.js"></script> 
    </head> 
    <ion-header-bar align-title="center" class="bar-positive" ng-controller="BackBtnCtrl"> 
      <button class="button" ng-click="goBack()"><<</button> 
     <h1 class="title">Push Notifications</h1> 
    </ion-header-bar> 
    <ion-content> 
     <div class="list"> 
     <form style="display: block; margin: 100px"> 
       <label class="item item-input"> 
        <input type="text" ng-model="name" placeholder="Name"> 
       </label> 
       <label class="item item-input"> 
        <input type="password" ng-model="password" placeholder="Password" style="text-align: center"> 
       </label> 
       <label class="item item-input"> 
        <input type="email" ng-model="email" placeholder="Email" style="text-align: center"> 
       </label> 
       <label class="item item-input"> 
        <input type="text" ng-model="company" placeholder="Company Name" style="text-align: center"> 
       </label> 
     <button class="button button-block button-positive" type="submit" ng-click="doLogin()">Register</button> 
     </form> 
     </div> 
    </ion-content> 
</body> 

Nun meine app.js in ich den Regler für den Ionengehalt als erklären In der Android-App wird es korrekt zurückgegeben. Aber wenn ich auf $scope.email in der iOS App zugreife, werde ich undefiniert. Hat jemand jemals von diesem Problem gehört?

Controller:

.controller('LoginCtrl', function($scope, $rootScope, $http, $state, $ionicPlatform) { 
    if(window.localStorage.getItem("loggedIn") == undefined || window.localStorage.getItem("loggedIn") == null) { 
     // This function only gets called when the register button gets hit. It posts to the server to store the users registration data 
     $scope.doLogin = function() { 

     if ($scope.name == undefined || $scope.password == undefined|| $scope.email == undefined|| $scope.company == undefined) { 
     window.plugins.toast.showWithOptions(
      { 
      message: 'Please Fill in ALL Fields', 
      duration: 'long', 
      position: 'middle' 
      }); 
      alert($scope.email); 
      alert("returning"); 
      return; 
     } 
     alert($scope.email); 
+0

Was ist diese Regel? und $ scope.email sollte der vom Benutzer eingegebene Text sein, wenn die Anwendung ausgeführt wird. –

+0

Ich habe Code falsch gelesen, da die Funktion nicht geschlossen war und es so schlecht formatiert ist. Wie für dot watch dieses 3-Minuten-Video https://www.youtube.com/watch?v=DTx23w4z6Kc – charlietfl

+0

Ich einfach kopieren und eingefügt von Text-Editor auf die Code-Einfügung hier. Entschuldigung für die Formatierung, die dich beleidigt. Weißt du, warum auf iOS $ scope.email nicht definiert ist, obwohl Text in dem Feld ist? –

Antwort

0

Das klingt vielleicht absolut c razy ..

Lassen Sie mich zuerst alle Antworten danken. Ich habe viel gelernt, wie es sein sollte und wie ich meinen Code als "Standard" festlegen muss. Wie die Verwendung von. Objekt anstelle von primitiven Strings. Danke.

Aber ich habe mein Problem gelöst.Das Ding, das meine Felder unbestimmt machte, war, dass ich type='email' hatte und wenn sie nur etwas anderes als eine E-Mail eingegeben hatten, kam sie unbestimmt zurück. Ich weiß nicht wie, aber das hat es behoben. Ich änderte type='text' und es behob meine Probleme.

0

Nach der offiziellen Angular Dokumentation, sollten Sie den Controller wie folgt erklären:

myApp.controller('GreetingController', ['$scope', function($scope) { 
    $scope.greeting = 'Hola!'; 
}]); 

Also, versuchen Sie den Code in folgender Weise ändern:

.controller('LoginCtrl', ['$scope', '$rootScope', '$http', '$state', '$ionicPlatform', function($scope, $rootScope, $http, $state, $ionicPlatform) { 
    if(window.localStorage.getItem("loggedIn") == undefined || window.localStorage.getItem("loggedIn") == null) { 
     // This function only gets called when the register button gets hit. It posts to the server to store the users registration data 
     $scope.doLogin = function() { 

     if ($scope.name == undefined || $scope.password == undefined|| $scope.email == undefined|| $scope.company == undefined) { 
     window.plugins.toast.showWithOptions(
      { 
      message: 'Please Fill in ALL Fields', 
      duration: 'long', 
      position: 'middle' 
      }); 
      alert($scope.email); 
      alert("returning"); 
      return; 
     } 
     alert($scope.email); 
+0

Ich habe die Änderung vorgenommen. Vielen Dank für die Einsicht auf den richtigen Weg, aber leider hat es mein Problem nicht behoben. –

+0

Hallo Austin, können Sie diese Antwort http://stackoverflow.com/questions/31988632/ng-model-is-undefined-in-controller überprüfen –

Verwandte Themen