初始化
在默认情况下,Mobilebone 是自动初始化的,初始化的时机在 DOMContentLoaded 之后。
初始化做了这么几件事情:
- 根据当前 URL 地址中的路由信息,显示或者加载对应的页面;如果没有任何路由信息,则让第一个匹配
Mobilebone.classPage
的元素显示。 - 给页面文档全局委托
'click'
事件,对所有的<a>
元素进行劫持处理。 - 一些兼容性处理;
在某些场景下,DOMContentLoaded 之后自动初始化是有问题的。
手动设置
Mobilebone 初始化的时候,在对应页面显示的同时,会有完整的页面显示逻辑的执行,这个显示逻辑的执行会动用大量的 Mobilebone 参数,以及触发部分的生命周期函数的执行。
如果 Mobilbebone 的参数设置必须依赖于异步返回的数据,或者生命周期函数中的某些代码有其他依赖,自动执行 Mobilebone.init()
的时机就不对,导致参数传入滞后、或者函数无法顺利执行。这些场景就需要开发者自己手动进行 Mobilebone 的初始化,方法如下:
- 设置
Mobilebone.autoInit
的值为false
; - 在合适的位置执行
Mobilebone.init()
。
例如,indexDB 存储是异步过程,在 Mobilebone 初始化之前需要先从本地数据库中读取一些数据,则就需要在 indexDB 存储的数据获取之后再进行 Mobilebone 的初始化。
以 localforage 这个本地存储工具示意:
在页面外设置:
Mobilebone.autoInit = false;
业务代码中:
localforage.getItem('someId', function (err, value) {
if (err == null && value) {
// 使用value干嘛干嘛,然后初始化
Mobilebone.init();
}
});
发现错误?想参与编辑?在 GitHub 上编辑此页!