2016-03-25 6 views
0

Ich beginne mit AngularJS und habe mein erstes Problem damit.Wie speichert man Daten in localStorage mit AngularJS?

Wie kann ich Benutzername und Passwort in localStorage binden oder speichern? Mein Formular ist leer, nachdem die Seite neu geladen oder die App neu gestartet wurde.

Ich benutze dieses Plugin: https://github.com/grevory/angular-local-storage

HTML:

<input type="text" name="cy_username" id="cy_username" ng-model="username"> 
<input type="password" name="cy_password" id="cy_password" ng-model="password"> 
     <button class="button button-block button-positive icon ion-edit icon-left" ng-click="saveSettings()">Einstellungen 
      speichern 
     </button> 
     <button class="button button-block button-assertive icon ion-trash-b icon-left" ng-click="resetSettings()"> 
      Einstellungen löschen 
     </button> 

Controller:

angular.module('starter.controllers', ['LocalStorageModule']) 

    .controller('SettingsCtrl', function ($scope, localStorageService) { 
     $scope.username = localStorageService.get('username'); 
     $scope.password = localStorageService.get('password'); 


     $scope.saveSettings = function() { 
      if (localStorageService.isSupported) { 
       localStorageService.set('username', $scope.username); 
       localStorageService.set('password', $scope.password); 
      } else { 
       console.error('localStorage is not supported!'); 
      } 
     }; 

     // doesn't work, nothing happens 
     $scope.resetSettings = function() { 
      $scope.username = ''; 
      $scope.password = ''; 
      localStorageService.clearAll(); 
     }; 
    }); 
+0

ist es nicht sollte "localStorageService.cookie.clearAll" sein? –

+0

https://github.com/grevory/angular-local-storage#clearall – user3646958

+1

Was Sie wollen, ist aus Sicherheitsgründen eine schlechte Idee. Sie sollten NIE den Benutzernamen und das Passwort in Ihrer App speichern, insbesondere in localStorage oder einem Cookie. Melden Sie den Benutzer an und speichern Sie eine eindeutige Sitzungs-ID, auf die Sie verweisen können. Diese Werte gehören in eine Datenbank und sind vollständig verschlüsselt. – MBielski

Antwort

2

Es ist eine wirklich schlechte Praxis zum Speichern von Benutzerinformationen in localstorage .. Aber Ich habe eine JSBIN arbeiten für Ihre Anforderungen und es funktioniert .. Scrollen Sie nach unten für die JS-Code, wie ich die Bibliothek über JS

enthalten PS: Ignorieren Sie die Js-Fehler und Warnungen. Diese sind aus der Winkel-Local-Storage-Bibliothek

+0

Vielen Dank. Es klappt. Aber warum? Ich kann es nicht verstehen. Ich habe ein Formular-Tag mit ng-submit hinzugefügt und die Schaltfläche zu submit-type geändert. Das Problem war immer noch da, aber nach dem Hinzufügen von ng-controller = "SettingsCtrl" funktioniert es. Aber ich dachte, es ist schon im Modul eingestellt? – user3646958

+1

Sie müssen den Controller auch auf das DOM (html) -Element setzen, auf das der Controller als ng-controller = "MyCtrl" anwenden würde. Das definiert den Umfang des Controllers tatsächlich. Ohne sie werden die Funktionen und die Modelle nicht automatisch angewendet. So müssen Sie beide tun: 1) wenden Sie den Controller auf html 2) definieren Sie den Controller als appModule.controller – AhsanAyaz

+0

Aber warum funktioniert und {{test}} ohne Anwendung der Controller auf HTML? Entschuldigung für meine Fragen. – user3646958