从sqlite Ionic 4获取数据
Obtain data from sqlite Ionic 4
我的代码有问题,当我去寻找我存储在 SQLite 中的数据时,这些数据在最后执行,我需要它们,因为我需要它们来使用最终加载的服务屏幕上的数据。
我在下面留下我的代码:
import { Component, OnInit } from '@angular/core';
import { LoadingController, Platform } from '@ionic/angular';
import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';
import { Uid } from '@ionic-native/uid/ngx';
import { EsqueletoServiceProvider } from '../../providers/no4get-
service/no4get-services';
import { DatabaseServiceProvider } from '../../providers/database-
service/database-service';
import { AlertController } from '@ionic/angular';
@Component({
selector: 'app-general',
templateUrl: './general.page.html',
styleUrls: ['./general.page.scss'],
})
export class GeneralPage {
listaCategorias: any;
token: any;
imei: string;
cards: any;
loading: any;
datosTelefono: any;
constructor(private loadingController: LoadingController,
public esqueletoService: EsqueletoServiceProvider,
public databaseService: DatabaseServiceProvider,
public uid: Uid,
public androidPermissions: AndroidPermissions,
public alertCtrl: AlertController,
public platform: Platform
)
{
this.listaCategorias = "1";
this.databaseService.getSesion(1).then(result => {
this.token = result.valor;
})
.catch( error => {
this.MostrarAlerta("Noticias","","Hubo un problema al obtener los
datos del usuario.");
});
this.databaseService.getSesion(2).then(result => {
this.imei = result.valor;
})
.catch( error => {
this.MostrarAlerta("Noticias","","Hubo un problema al obtener los
datos del usuario.");
});
}
ionViewDidEnter()
{
this.platform.ready().then(() => {
let datos = {
idNoticias: 0,
token: this.token,
imei: this.imei
};
this.LoaderNoticias();
this.esqueletoService.CargarNoticiasGeneral(datos).then((result) =>
{
if (result != null)
{
let codigoError = result.toString().split('|');
if(codigoError[0] == "777")
{
this.loadingController.dismiss();
this.cards = result;
}
else if (codigoError[0] == "305")
{
this.loadingController.dismiss();
this.MostrarAlerta("Noticias","",codigoError[2]);
}
else if (codigoError[0] == "310")
{
this.loadingController.dismiss();
this.MostrarAlerta("Noticias","",codigoError[2]);
}
else if(codigoError[0] == "315")
{
this.loadingController.dismiss();
this.MostrarAlerta("Noticias","",codigoError[2]);
}
else if(codigoError[0] == "000")
{
this.loadingController.dismiss();
this.MostrarAlerta("Noticias","","Estimado usuario, hubo un
error inesperado.");
}
} else {
this.loadingController.dismiss();
this.MostrarAlerta("Noticias","","Estimado usuario, hubo un
error inesperado.");
}
}, (err) => {
this.loadingController.dismiss();
this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error
inesperado.");
});
});
}
目前,当执行 ionViewDidEnter ()
事件时,它会创建一个名为 data
的变量,这是我要将数组发送到我的服务的地方,但令牌和 IMEI 字段最多点是 undefined
。执行整个 ionViewDidEnter ()
事件后,通过遵循代码路径,代码仅分配构造函数中令牌和 IMEI 变量的数据。
问题是,如何在ionViewDidEnter ()
事件执行前获取到这些数据?
我的代码正在 visual studio 代码和 Ionic 4 中执行。我提前感谢你能给我的所有可能的帮助,同时我会继续调查。
如果您的数据依赖于其他异步数据,那么您只需要继续嵌套它,直到您慢慢发疯 :P
从构造函数中删除代码,然后将其全部放入 ionViewDidEnter()
并嵌套:
ionViewDidEnter() {
this.platform.ready().then(() => {
this.listaCategorias = "1";
this.databaseService.getSesion(1).then(result => {
this.token = result.valor;
this.databaseService.getSesion(2).then(result => {
this.imei = result.valor;
let datos = {
idNoticias: 0,
token: this.token,
imei: this.imei
};
this.LoaderNoticias();
this.esqueletoService.CargarNoticiasGeneral(datos).then((result) => {
if (result != null) {
let codigoError = result.toString().split('|');
if (codigoError[0] == "777") {
this.loadingController.dismiss();
this.cards = result;
}
else if (codigoError[0] == "305") {
this.loadingController.dismiss();
this.MostrarAlerta("Noticias", "", codigoError[2]);
}
else if (codigoError[0] == "310") {
this.loadingController.dismiss();
this.MostrarAlerta("Noticias", "", codigoError[2]);
}
else if (codigoError[0] == "315") {
this.loadingController.dismiss();
this.MostrarAlerta("Noticias", "", codigoError[2]);
}
else if (codigoError[0] == "000") {
this.loadingController.dismiss();
this.MostrarAlerta("Noticias", "", "Estimado usuario, hubo un error inesperado.");
}
} else {
this.loadingController.dismiss();
this.MostrarAlerta("Noticias", "", "Estimado usuario, hubo un error inesperado.");
}
}, (err) => {
this.loadingController.dismiss();
this.MostrarAlerta("Noticias", "", "Estimado usuario, hubo un error inesperado.");
});
}).catch(error => {
this.MostrarAlerta("Noticias", "", "Hubo un problema al obtener los datos del usuario.");
});
}).catch(error => {
this.MostrarAlerta("Noticias", "", "Hubo un problema al obtener los datos del usuario.");
});
});
}
我的代码有问题,当我去寻找我存储在 SQLite 中的数据时,这些数据在最后执行,我需要它们,因为我需要它们来使用最终加载的服务屏幕上的数据。 我在下面留下我的代码:
import { Component, OnInit } from '@angular/core';
import { LoadingController, Platform } from '@ionic/angular';
import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';
import { Uid } from '@ionic-native/uid/ngx';
import { EsqueletoServiceProvider } from '../../providers/no4get-
service/no4get-services';
import { DatabaseServiceProvider } from '../../providers/database-
service/database-service';
import { AlertController } from '@ionic/angular';
@Component({
selector: 'app-general',
templateUrl: './general.page.html',
styleUrls: ['./general.page.scss'],
})
export class GeneralPage {
listaCategorias: any;
token: any;
imei: string;
cards: any;
loading: any;
datosTelefono: any;
constructor(private loadingController: LoadingController,
public esqueletoService: EsqueletoServiceProvider,
public databaseService: DatabaseServiceProvider,
public uid: Uid,
public androidPermissions: AndroidPermissions,
public alertCtrl: AlertController,
public platform: Platform
)
{
this.listaCategorias = "1";
this.databaseService.getSesion(1).then(result => {
this.token = result.valor;
})
.catch( error => {
this.MostrarAlerta("Noticias","","Hubo un problema al obtener los
datos del usuario.");
});
this.databaseService.getSesion(2).then(result => {
this.imei = result.valor;
})
.catch( error => {
this.MostrarAlerta("Noticias","","Hubo un problema al obtener los
datos del usuario.");
});
}
ionViewDidEnter()
{
this.platform.ready().then(() => {
let datos = {
idNoticias: 0,
token: this.token,
imei: this.imei
};
this.LoaderNoticias();
this.esqueletoService.CargarNoticiasGeneral(datos).then((result) =>
{
if (result != null)
{
let codigoError = result.toString().split('|');
if(codigoError[0] == "777")
{
this.loadingController.dismiss();
this.cards = result;
}
else if (codigoError[0] == "305")
{
this.loadingController.dismiss();
this.MostrarAlerta("Noticias","",codigoError[2]);
}
else if (codigoError[0] == "310")
{
this.loadingController.dismiss();
this.MostrarAlerta("Noticias","",codigoError[2]);
}
else if(codigoError[0] == "315")
{
this.loadingController.dismiss();
this.MostrarAlerta("Noticias","",codigoError[2]);
}
else if(codigoError[0] == "000")
{
this.loadingController.dismiss();
this.MostrarAlerta("Noticias","","Estimado usuario, hubo un
error inesperado.");
}
} else {
this.loadingController.dismiss();
this.MostrarAlerta("Noticias","","Estimado usuario, hubo un
error inesperado.");
}
}, (err) => {
this.loadingController.dismiss();
this.MostrarAlerta("Noticias","","Estimado usuario, hubo un error
inesperado.");
});
});
}
目前,当执行 ionViewDidEnter ()
事件时,它会创建一个名为 data
的变量,这是我要将数组发送到我的服务的地方,但令牌和 IMEI 字段最多点是 undefined
。执行整个 ionViewDidEnter ()
事件后,通过遵循代码路径,代码仅分配构造函数中令牌和 IMEI 变量的数据。
问题是,如何在ionViewDidEnter ()
事件执行前获取到这些数据?
我的代码正在 visual studio 代码和 Ionic 4 中执行。我提前感谢你能给我的所有可能的帮助,同时我会继续调查。
如果您的数据依赖于其他异步数据,那么您只需要继续嵌套它,直到您慢慢发疯 :P
从构造函数中删除代码,然后将其全部放入 ionViewDidEnter()
并嵌套:
ionViewDidEnter() {
this.platform.ready().then(() => {
this.listaCategorias = "1";
this.databaseService.getSesion(1).then(result => {
this.token = result.valor;
this.databaseService.getSesion(2).then(result => {
this.imei = result.valor;
let datos = {
idNoticias: 0,
token: this.token,
imei: this.imei
};
this.LoaderNoticias();
this.esqueletoService.CargarNoticiasGeneral(datos).then((result) => {
if (result != null) {
let codigoError = result.toString().split('|');
if (codigoError[0] == "777") {
this.loadingController.dismiss();
this.cards = result;
}
else if (codigoError[0] == "305") {
this.loadingController.dismiss();
this.MostrarAlerta("Noticias", "", codigoError[2]);
}
else if (codigoError[0] == "310") {
this.loadingController.dismiss();
this.MostrarAlerta("Noticias", "", codigoError[2]);
}
else if (codigoError[0] == "315") {
this.loadingController.dismiss();
this.MostrarAlerta("Noticias", "", codigoError[2]);
}
else if (codigoError[0] == "000") {
this.loadingController.dismiss();
this.MostrarAlerta("Noticias", "", "Estimado usuario, hubo un error inesperado.");
}
} else {
this.loadingController.dismiss();
this.MostrarAlerta("Noticias", "", "Estimado usuario, hubo un error inesperado.");
}
}, (err) => {
this.loadingController.dismiss();
this.MostrarAlerta("Noticias", "", "Estimado usuario, hubo un error inesperado.");
});
}).catch(error => {
this.MostrarAlerta("Noticias", "", "Hubo un problema al obtener los datos del usuario.");
});
}).catch(error => {
this.MostrarAlerta("Noticias", "", "Hubo un problema al obtener los datos del usuario.");
});
});
}