Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 离子存储&x27;在重新加载页面之前无法工作_Javascript_Angular_Ionic Framework_Promise_Storage - Fatal编程技术网

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”存储。检查一下。

是的,现在我记得我猜的问题了。我有一个类似的问题,我想登录并根据登录详细信息显示数据

  • 首先,我使用location.reload();登录后重新加载整个应用程序,这很不好

  • 然后我找到了解决我问题的方法。你可以试试这个。 示例代码是

  • 在我订阅的侧边栏控制器中

      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()