初始化

在默认情况下,Mobilebone 是自动初始化的,初始化的时机在 DOMContentLoaded 之后。

初始化做了这么几件事情:

在某些场景下,DOMContentLoaded 之后自动初始化是有问题的。

手动设置

Mobilebone 初始化的时候,在对应页面显示的同时,会有完整的页面显示逻辑的执行,这个显示逻辑的执行会动用大量的 Mobilebone 参数,以及触发部分的生命周期函数的执行。

如果 Mobilbebone 的参数设置必须依赖于异步返回的数据,或者生命周期函数中的某些代码有其他依赖,自动执行 Mobilebone.init() 的时机就不对,导致参数传入滞后、或者函数无法顺利执行。这些场景就需要开发者自己手动进行 Mobilebone 的初始化,方法如下:

  1. 设置 Mobilebone.autoInit 的值为 false
  2. 在合适的位置执行 Mobilebone.init()

例如,indexDB 存储是异步过程,在 Mobilebone 初始化之前需要先从本地数据库中读取一些数据,则就需要在 indexDB 存储的数据获取之后再进行 Mobilebone 的初始化。

localforage 这个本地存储工具示意:

在页面外设置:

Mobilebone.autoInit = false;

业务代码中:

localforage.getItem('someId', function (err, value) {
    if (err == null && value) {
        // 使用value干嘛干嘛,然后初始化
        Mobilebone.init();
    }
});

以及,如果 Mobilebone 是在页面完全加载之后被载入的,则 DOMContentLoaded 事件是不会执行的,此时也需要手动初始化。


发现错误?想参与编辑?在 GitHub 上编辑此页