2015-12-07 7 views
6

Ho problemi nell'archiviazione e nella lettura dei dati di sessione con Angularjs. Dopo aver fatto clic sul pulsante emp_name deve essere memorizzato in session e anche come posso leggere emp_name memorizzato da session.Come memorizzare e leggere la sessione (valore) in AngularJs?

Sample in plnkr

// Code goes here 
 

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

 
app.controller('Ctrl', function($scope) { 
 
    $scope.employee = [{ 
 
     emp_id: 1, 
 
     emp_name: 'Jes', 
 
     emp_cont:9876543445 
 
    }, { 
 
     emp_id: 2, 
 
     emp_name: 'Sandy', 
 
     emp_cont:3553454345 
 
    }, { 
 
     emp_id: 3, 
 
     emp_name: 'Alex', 
 
     emp_cont:9343434345 
 
    }, { 
 
     emp_id: 4, 
 
     emp_name: 'Nancy', 
 
     emp_cont:9876543445 
 
    }, { 
 
     emp_id: 5, 
 
     emp_name: 'Scott', 
 
     emp_cont:9834564455 
 
    } 
 
    ]; 
 
    
 
      $scope.returnRefId = function (emp) {   
 
      try { 
 
        // test emp 
 
        alert(emp); 
 
        // session code here 
 
        
 
      } 
 
      catch (e) { 
 
        alert("some errror"); 
 
      } 
 
     }; 
 
});
ul li{list-style:none;float:left;padding:10px;border:1px solid #ddd;height:20px;width:100px} 
 
ul{clear:both} 
 
label{color:red}
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <script data-require="[email protected]*" data-semver="1.3.0-beta.5" src="https://code.angularjs.org/1.3.0-beta.5/angular.js"></script> 
 
    <link rel="stylesheet" href="style.css" /> 
 
    <script src="script.js"></script> 
 
</head> 
 

 
<body ng-app="app" ng-controller="Ctrl"> 
 
    <ul ng-repeat="employees in employee | filter:customFilter"> 
 
    <li>{{employees.emp_id}} </li> 
 
    <li>{{employees.emp_name}} </li> 
 
    <li>{{employees.emp_cont}} </li> 
 
    <li><button ng-click="returnRefId(employees.emp_name);" >Add Session</button></li>  
 
    </ul> 
 
    <br /><br /><br /> 
 
    <label id="read_ses">How to store and read emp_name thru only session</label> 
 
</body> 
 

 
</html>

ho creato segnalazione emp_name il clic utilizzando angularjs. Voglio che sul pulsante clic emp_name deve essere memorizzato in session e per lo scopo di test session leggere i dati emp_name da qualche parte sulla pagina.

Qualsiasi e tutti gli aiuti/consigli sono apprezzati sinceramente. Grazie.

risposta

6

Il codice di archiviazione della sessione potrebbe avere un aspetto simile utilizzando le API Javascript per l'archiviazione di sessione. Dovrai serializzare il tuo oggetto Javascript poiché la memoria di sessione supporta solo le stringhe.

$scope.returnRefId = function (emp) {   
     try { 
       // test emp 
       alert(emp); 
       // session code here 
       sessionStorage.setItem("emp-key", JSON.stringify(emp)); 
     } 
     catch (e) { 
       alert("some errror"); 
     } 
}; 

In alternativa, è possibile lo stoccaggio di ogni proprietà emp in chiave di stoccaggio separato. Debug dovrebbe essere semplice come

sessionStorage.getItem("emp-key")

Maggiori informazioni sulla memorizzazione delle sessioni può essere trovato qui. https://developer.mozilla.org/en/docs/Web/API/Window/sessionStorage

checkout anche ngStorage https://github.com/gsklee/ngStorage

+0

Ciao Omkar. Ho provato questo ma riattivo "null" ..... '$ scope.returnRefId = function (emp) { try { // test emp // alert (emp); // codice di sessione qui sessionStorage.setItem ("emp-key", JSON.stringify (emp)); } catch (e) { alert ("some errror"); } var data = sessionStorage.getItem ('chiave'); Allarme (dati); }; ' – Rakesh

+0

La chiave del metodo getItem dovrebbe essere la stessa di setItem. Nel tuo caso "emp-key". –

+0

Dovrebbe essere 'var data = sessionStorage.getItem ('emp-key'); '. –

3

Le applicazioni AngularJS sono senza stato, quindi non c'è davvero una sessione. Tuttavia, è possibile simulare il comportamento della sessione utilizzando la memoria locale. Ecco lo ngStorage, un modulo AngularJS che puoi utilizzare per modellare la tua sessione.

In generale, è possibile creare un servizio per accedere ai dati contenuti nella memoria locale e quindi iniettare il servizio ogni volta che è necessario accedere ai dati della sessione.

Il migliore!

+0

stessa cosa può essere fatto da javascript, jquery, C# o qualsiasi altro scripting ?? – Rakesh

+0

grazie per il vostro prezioso consiglio Maurizio Vacca – Rakesh

+0

@Rakesh - dal momento che 'localStorage' è lo standard HTML5, sì. Puoi accedervi utilizzando puro javascript o attraverso un framework come jQuery o AngularJS. Suggerirei di usare moduli o plugin per gestirlo, poiché generalmente forniscono un'interfaccia utile per evitare l'operazione di serializzazione/deserializzazione (considerando che localStorage memorizza 'Objects' come' String'). Informazioni su C#, è generalmente eseguito lato server quindi no, non è possibile accedere direttamente a localStorage (ma è possibile implementare la logica per mantenere sincronizzati i dati client e server). Il meglio! –

0

sessione HTTP è memorizzato nel lato server e AngularJS lavora sul lato del cliente. Se si desidera accedere alla sessione HTTP dall'applicazione Angolare, sarà necessario implementare un servizio sul form server, quindi chiamarlo da Angular utilizzando httpService.

+0

grazie per il tuo prezioso consiglio Michal Kolenda – Rakesh