3

我在使用 Lawnchair (0.6.1) 时遇到了一个令人讨厌的问题。我想拥有 2 个可全局访问的集合/草坪椅,都带有webkit-sqlite适配器。这就是我在加载 Lawnchair 和适配器后声明它们的方式:

var clientStore = Lawnchair({name: 'clients'}, function () {});
var companyStore = Lawnchair({name: 'companies'}, function () {});
// other global variables
...

在我桌面上的 Safari 和 Chrome 中,一切都很顺利,我的 iPad 和使用 Phonegap (3.0.0) 的模拟器中的其他 iOS 设备也是如此。完全没有问题,两个数据库都显示在网络检查器和 Weinre 中。我可以在任何 JQuery Mobile 事件(版本 1.3.2 和 1.4.0 beta)中使用它们。在 Weinre 中手动检查数据库对象确认它们确实在使用webkit-sqlite适配器。

但是,如果在 Android 上运行 Phonegap 应用程序,则只有它clientStore是可访问和可用的。尝试访问companyStore给我以下错误:

companyStore.all(function (allEntries) {
    console.log(allEntries);
...

> TypeError: Cannot call method 'all' of undefined

Android 设备上 Weinre 中显示的唯一数据库是clients数据库。加载完所有内容后,从 Weinre 检查器控制台手动初始化companies数据库不会对“资源”选项卡上的数据库列表产生任何影响或更改任何其他内容(上述错误在视觉上消失除外)。

尝试以companyStore编程方式访问“未定义”,例如当有人切换到应列出所有公司的页面时,Android 设备上的 UI 会“崩溃”。在那之后,控制台上什至没有任何东西被打印出来。如前所述,所有其他平台都可以正常工作。

我只是在做一些愚蠢的错误,还是遇到了错误/功能?

非常感谢您的帮助,这个把我逼疯了:(。

编辑:到目前为止,使用标准 DOM 适配器在每个平台上都适用于我。我想我现在会坚持那个。如果有人遇到同样的问题,下面是如何显式使用 DOM 适配器:

var clientStore = Lawnchair({name: 'clients', adapter: 'dom'}, function () {});
var companyStore = Lawnchair({name: 'companies', adapter: 'dom'}, function () {});
4

0 回答 0