0

我正在使用 Ratchet 附带的电影演示应用程序作为我的应用程序的模板。

我做的第一件事是将索引页面上的静态 html 电影更改为 jQuery ajax 获取的电影。但是我遇到的问题是,当我返回索引页面时,它是空的,因为 javascript 获取和生成的内容没有被缓存。

同样的问题出现在这里: https ://groups.google.com/forum/#!topic/goratchet/3nlzW_A8Tys

解决方案是 addEventListener("push") 并缓存页面,但我不清楚如何实现这一点。

  • 我是否必须使用 Push 来获取内容,如果是,如何?
  • 你如何缓存页面?
4

1 回答 1

1

Push.js 在您离开页面之前缓存上下文,并将其缓存在domCache由导航事件的时间戳作为键的关联数组中。通过触发带有时间戳的 popstate 事件返回缓存页面。

var e = new CustomEvent('popstate')
e.state = <cached-timetamp-key>
window.dispatchEvent(e)

缓存项键是缓存回栈中的最后一项cacheMapping.cachedBackStack

因此,如果您向 push.js(在您的 ratchet.js 文件中)添加一个方法以返回 backstack 中的下一项

var getPreviousId = function () {
    var backStack = JSON.parse(cacheMapping.cacheBackStack);
    return backStack.length > 0 ? backStack[backStack.length -1] : null;
}

以及在哪里保存以前的 id 保存当前 id 的位置,例如 find

PUSH.id = data.id;

并添加该行以公开先前的 id

PUSH.id = data.id;
PUSH.previousId = getPreviousId(); //save previous id

然后您可以使用以下内容返回缓存页面

var e = new CustomEvent('popstate');
e.state = PUSH.previousId;
window.dispatchEvent(e);

如果您希望棘轮自动处理,则必须在适当的时候进入touchend()方法或 PUSH() 本身调用popstate()

于 2014-11-12T23:09:46.680 回答