0

我在使用 Simperium 时遇到问题。

这个小 plnkr允许一个用户在我的应用程序上创建一个帐户,并对其进行身份验证。

进行身份验证后,您可以使用名称:值对修改存储桶object_to_update中的对象mydata_data(按更新按钮即可!)。

问题是我总是object_to_update在更新对象时执行存储桶的本地回调。我不明白为什么。更新在本地触发(我在此页面上没有其他远程操作),但即使在本地触发它也总是会触发本地回调。

文档local说:

每当库需要在向您发送通知事件之前检查对象的当前本地状态时,就会触发此回调。这样任何本地更改都可以合并到更新的对象中。在上面的示例中,您可能正在同步来自名为“mytextfield”的 HTML 元素的文本输入。如果有可用的更新(此对象已在其他地方更改),库将期望获取对象的当前状态,以便将本地更改与远程更改合并。当您收到通知事件时,您可以直接更新“mytextfield”。

但是更新不是在其他地方触发的,我是在本地触发的!

我看到更新按预期成功的唯一方法是复制更新代码:

bucket.update ("object_to_update", {on: va});

在本地回调中,具有完全相同的onva值,但是首先复制它有什么意义呢?必须有另一种解释。

4

1 回答 1

1

我相信该库只是在查询您的应用程序以获取它应该发送到服务器的数据。预计调用local将始终返回对象的最新本地数据(即使您已在应用程序的其他地方更改它)。

于 2013-10-14T19:04:14.560 回答