Javascript 离子存储&x27;在重新加载页面之前无法工作
我试图从存储器中“获取”一个数组,将其保存到Javascript 离子存储&x27;在重新加载页面之前无法工作,javascript,angular,ionic-framework,promise,storage,Javascript,Angular,Ionic Framework,Promise,Storage,我试图从存储器中“获取”一个数组,将其保存到MaschinenArray并生成一个离子列表。我唯一的问题是,我必须在“ionic serve”命令之后重新加载页面一次,否则它会显示Maschinen=null 我认为如果这个函数是异步的,HTML在加载之前可能会出现问题,但是如果我稍后通过按钮触发事件,它仍然会显示null 我初始化构造函数上方的数组: export class MaschinenParkPage { maschinenArray : Maschine[] = []; cons
MaschinenArray
并生成一个离子列表。我唯一的问题是,我必须在“ionic serve”命令之后重新加载页面一次,否则它会显示Maschinen=null
我认为如果这个函数是异步的,HTML在加载之前可能会出现问题,但是如果我稍后通过按钮触发事件,它仍然会显示null
我初始化构造函数上方的数组:
export class MaschinenParkPage {
maschinenArray : Maschine[] = [];
constructor(private menu: MenuController, public alertCtrl: AlertController, public navCtrl: NavController, private storage: Storage) {
this.storage.get('maschinen').then((buffer) => {
this.maschinenArray = buffer;
});
有什么想法吗?或者构造函数可能是初始化某些变量的错误位置吗?您真的需要声明该数组吗 如果已将其正确存储在存储器中,则可以按如下方式检索对象数组:
export class MaschinenParkPage {
maschinenArray : any;
constructor(private menu: MenuController, public alertCtrl: AlertController, public navCtrl: NavController, private storage: Storage) {
this.storage.get('maschinen').then((buffer) => {
this.maschinenArray = buffer;
console.log(this.maschinenArray);
});
我已经在我的代码中写了类似的东西,并且工作得非常好。
您可以转到chrome inspect(按Ctrl+Shift+I组合键)并检查console.log
更新:
也可以转到chrome inspect->Application tab->IndexedDB以查找“maschinen”存储。检查一下。是的,现在我记得我猜的问题了。我有一个类似的问题,我想登录并根据登录详细信息显示数据
this.events.subscribe('user:login', () => {
this.ngOnInit();
});
在我的登录控制器中
this.storage.ready().then(() => {
this.storage.set('loginData', response).then(()=>{
this.events.publish('user:login');
});
});
根据我的代码,我从ngOnInit中的存储器中检索数据。
希望这能有所帮助。您需要等待存储。在取货前准备好没有帮助,我已经尝试过了OK。可怜。但是,您仍然需要按照代码进行编码,这并没有起到可悲的作用。需要明确的是:如果调用page:MaschineParkPage,我点击了一个在控制台中记录数组的按钮,那么它会显示“null”。如果我尝试添加一个对象,就会出现错误:无法读取null的属性“push”。似乎直到我单击F5一次,数组才被初始化,一切都正常了……indexeddb中没有“Maschinen”存储。但是在Web SQL部分的_-ionickv中,我找到了我的MaschinenArray条目。@felix9607是的,它在_-ionickv上,检查我的第二个答案。我要试试这个!感谢您迄今为止的帮助location.reload()杀死了sqlite cordova插件。我建议不要使用它(如果你仍然使用的话)@TomG现在我使用的是事件而不是位置。reload()