2016-12-23 7 views
1

Как я могу использовать ионическое хранилище в своем приложении. Я пробовал со следующим, но когда я пытаюсь читать, я получаю всегда [object Object] как значение назад. Он работает, когда у меня есть метод get/set в одном классе, но я хочу структурировать свой проект и передать часть хранилища.Ionic Storage предоставляет неопределенное значение

@Component({ 
     selector: 'page-login', 
     templateUrl: 'login.html' 
    }) 
    export class LoginPage { 

     constructor(public testData: TestData) {} 

     onLogin(form) { 

     if (form.valid) { 
      this.testData.setTestParam("abc"); 
      console.log("Stored: " + this.testData.getTestParam()) ; 
      // delivers => Stored: [object Object] 
     } 
    }  

TestData Класс

@Injectable() 
export class TestData { 

constructor(public storage : Storage) {} 

setTestParam(testparam) 
{ 
    this.storage.set('test_param', testparam); 
} 

getTestParam(){ 
    return this.storage.get('test_param').then((value) => { 
     return value; 
    }); 
} 
} 
+0

Если вы в хроме перейдите на отладочной консоли и на вкладке Application и увидеть, как эти данные сохраняются в WebSQL или какой драйвер был использован – misha130

ответ

1

Ваши getTestParam() возвращает обещание не значение. Вы можете прочитать значение, делая

this.testData.getTestParam().then(data=>{ 
    console.log(data); 
}) 
+0

я должен сделать это в моем классе LoginPage? – CallMeBronxy

+0

yes..вместо 'console.log (« Сохранено: »+ this.testData.getTestParam());' –

+0

Спасибо, работает. Правильно ли это, или вы порекомендуете что-то другое? – CallMeBronxy

0

getTestParam возвращения Обещания вместо нормального значения. Чтобы прочитать возвращаемое значение из Promise, вы должны использовать метод then и использовать метод catch для обработки любой ошибки.

1

Вы можете использовать эту надежду, это вам поможет.

@Component({ 
     selector: 'page-login', 
     templateUrl: 'login.html' 
    }) 
    export class LoginPage { 

     constructor(public testData: TestData) {} 

     onLogin(form) { 
     if (form.valid) { 
      this.testData.setTestParam("abc"); 
      this.testData.getTestParam().then((value: any) => { 
      console.log(value); 
      }); 
      }}} 

TestData Класс

@Injectable() 
export class TestData { 

constructor(public storage : Storage) {} 

setTestParam(testparam) 
{ 
    this.storage.set('test_param', testparam); 
} 

getTestParam(){ 
     return new Promise((resolve, reject) => { 
      this.storage.get('test_param').then((value) => { 
       resolve(value); 
      }); 
     }); 
} 
}