在Phonegap Android上有2个收藏的草坪存储

时间:2013-10-02 23:59:43

标签: javascript android jquery cordova lawnchair

我在Lawnchair(0.6.1)遇到了一个令人讨厌的问题。我想拥有2个全球可访问的集合/ Lawnchairs,都使用 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设备也是如此。没有任何问题,两个数据库都显示在Web检查器和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数据库不会对“资源”选项卡上的数据库列表产生任何影响或更改其他任何内容(上述错误除外)在视觉上消失。 / p>

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

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

非常感谢你的帮助,这个让我感到困惑:(。

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

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

0 个答案:

没有答案