2016-10-14 2 views
0

У меня были проблемы с моим локальным файлом, где localforage не может установить глобальную переменную в обратном вызове успеха, но когда i console.log отображает значения.Назначить значение из localforage.getItem для глобальной переменной - ionic2

Localforage данные:

Key: login 
Value: [{"token": "bla bla bla", "member_id":1}] 

Код

public login_data: any; 
getMemberData() { 
    localforage.getItem("login").then(function(value){ 
    this.login_data = value[0]; 
    }); 
    console.log(this.login_data); 
} 

Выход

undefined 

Все, что я хочу, чтобы мак e это в глобальную переменную. И я могу использовать его легко, например:

this.login_data.member_id 
or 
this.login_data.token 

Некоторые способы, которые я пробовал, не соответствуют моим ожиданиям. я попробовал:

Assign value from successful promise resolve to external variable

how to assign the returned value of a promise to a variable?

setting a variable to get return from call back function using promise

Assign value from then function to a variable promise

[Примечание] Я использую Ионные 2, AngularJS 2, LocalForage

спасибо

ответ

0

Обещание оценивается, а затем устанавливает this.login_data = value[0];. Если вы измените вывод своей консоли внутри обещания, посмотрите, показывает ли он результат правильно.

localforage.getItem("login").then(function(value){ 
this.login_data = value[0]; 
console.log(this.login_data); 
}); 

UPDATE - пожалуйста, поделитесь выходом

ngOnInit() { 
    this.login_data= "My login details"; 
    console.log('Init to empty : '); 
    console.log(this.login_data); 
    console.log('--------'); 
    this.getMemberData();  
} 


getMemberData() { 
localforage.getItem("login").then(function(value){ 
console.log(value[0]); 
console.log('My Init login data still is -'); 
console.log(this.login_data); 
console.log('--------'); 
this.login_data = value[0]; 
console.log('After fetch -'); 
console.log(this.login_data); 
console.log('--------'); 
}); 
} 
+0

он выводит сообщение об ошибке: 'неперехваченной (обещанию): TypeError: Невозможно установить свойство 'login_data' из null' – int11

+0

Так у вас есть значение правильно неправдоподобные , теперь он устанавливает его против объекта login_data. Верный ? Попробуйте установить 'this.login_data = 'Данные для входа' вручную и отобразить вывод. Смотрите, если он даже принимает что-либо. Затем проверьте «значение», которое вы извлечете. Можете ли вы поделиться этим результатом? – Searching

+0

Я думаю, что значение 'value' или' value [0] 'равно null, может быть, потому что оно не существует или недоступно из модуля. Поэтому я бы отступил назад, чтобы увидеть, как извлечь элемент ... и может быть даже проверка хранения через браузер devtools, чтобы узнать, существует ли элемент. Вызов 'getMemberData()' inside 'ngOnInit()' .. – Searching

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