2016-03-09 3 views
1

Привет, ребята, я хотел знать, как управлять, как идентификатор сеанса пользователя, называть контроллеры представлений в Angular Js.Как управлять деталями пользователя во всех контроллерах в угловых Js

Сенарио - это то, что я сделал http-вызов и получил идентификатор пользователя и имя пользователя. теперь я хочу использовать это, когда я хочу в каких-либо контроллерах.

я попытался с сервисом углового значения, как установка

app.value("user",{user_id:"0",user_name:"blank"}) 

и HTTP вызова, где в контроллере

app.controller("exampleCtrl",function($http,user){ 
     user.user_id = data.user_id; 
     //lets say the user id is 4. 
     //and now user.user_id should be 4 as well 
}) 

теперь в другом контроллере

app.controller("nextCtrl",function(user){ 
    console.log(user.user_id); 
    //gives me 0 which should be 4? 
}) 

я, хотя это дало бы мне 4.

Надеюсь, у вас есть общее представление о том, что я пытаюсь сделать. есть ли другой способ? или я делаю это неправильно? pLease мне.

Thank you.

+0

проверки ниже ответ, я дал вам plunker пример, как а также использование фабрики, а также sessionStorage. Надеюсь, это поможет вам. –

ответ

2

Ну, существует различные варианты для вас, как с помощью:
$sessionStorage, localStorage, appConstant, $localStorage и так далее.

Вы можете делиться данными между контроллерами с помощью Factory и .

Поскольку вы просто хотите, чтобы переменная была известна во всем контроллере. Я дам вам простой пример использования $sessionStorage.

Для того, чтобы использовать $ sessionStorage или $ LocalStorage, вам нужно вводить ngStorage.

первым в index.html, включают источник:

<script src="https://rawgithub.com/gsklee/ngStorage/master/ngStorage.js"></script> 

Затем в определении модуля, впрыснуть ngStorage:

var app = angular.module('Your App Name', ['ngStorage']); 

Ваш HTTP CALL:

app.controller("exampleCtrl",function($http,user,$sessionStorage){ 
     user.user_id = data.user_id; 
     $sessionStorage.user_id = data.user_id; 
     //lets say the user id is 4. 
     //and now user.user_id should be 4 as well 
}) 

И, в Ано Ther controller вы получить доступ к нему, как показано ниже:

app.controller("nextCtrl",function(user,$sessionStorage){ 
    console.log($sessionStorage.user_id); 
//gives you 4 which you can then assign to any var you like. 
    console.log(user.user_id); 
    //gives me 0 which should be 4? 
}) 

После PLUNKER демонстрирует использование factory и $sessionStorage для обмена данными между контроллерами:
http://plnkr.co/edit/XPHwKQYcSCk3GSilvFtE?p=preview

+1

Удивительно, я сделал именно то, что хотел. Я буду искать больше, чтобы уничтожить сеансы и отключить сеансы в этом. Ценю вашу помощь. –

+0

Рад, что я могу помочь. –

+1

bro lai feri спасибо, tamang nai parnu vayecha! Lhasoo –

0

У углового есть модуль под названием ngCookies, который позволит вам взаимодействовать с кукисами, и он прост в использовании!

var app = angular.module("myApp", ["ngCookies"]); 

ngApp.factory("userPersistenceService", [ 
"$cookies", function($cookies) { 
    var userName = ""; 

    return { 
     setCookieData: function(username) { 
      userName = username; 
      $cookies.put("userName", username); 
     }, 
     getCookieData: function() { 
      userName = $cookies.get("userName"); 
      return userName; 
     }, 
     clearCookieData: function() { 
      userName = ""; 
      $cookies.remove("userName"); 
     } 
    } 
} 
]); 
0

Если вы хотите быстрое решение, я думаю, вы можете просто хранить его на $rootScope: AngularJS using $rootScope as a data store. (Вероятно, вы не будете обновлять его очень часто).

Если вы не возражаете, чтобы добавить зависимость, обратитесь к этому Угловому модулю: https://github.com/gsklee/ngStorage. Это дает вам лучший контроль над жизнью ваших сохраненных Дейтов: HTML5 Local storage vs. Session storage

Смежные вопросы