使用KnockoutJS更新多个选项卡

时间:2013-12-13 22:41:25

标签: user-interface mvvm knockout.js tabs

我的用户浏览产品并将其中的一些添加到他们的购物篮中。 我使用KnockoutJS来更新购物篮内容的列表。

但是,用户可以在同一会话中的多个选项卡/窗口上打开产品链接,并在第一个选项卡上选择一个产品,在第二个选项卡上选择另一个产品。 我想在每个页面上显示相同的购物篮内容。

KnockoutJS是否能够同时更新不同标签的DOM?

我想要一个仅更新更改的解决方案,并立即按KnockoutJS在单个页面上执行。我提到了一个篮子来说明问题,但篮子的内容相对较小,当用户打开背景标签时,可以通过AJAX调用轻松检索。 真正的问题是巨大数据库的不同视图,可以在多个选项卡中更新,并且在每个选项卡上都应该看起来一致。构建选项卡的DOM需要几秒钟。

(这个问题不是关于jQuery UI标签。情况如http://thesocialtester.co.uk/20-days-of-web-testing-multiple-tabs-and-windows/中所述)

如果答案不可能,我想听听有关变通方法或良好做法的建议。 提前谢谢。

2 个答案:

答案 0 :(得分:1)

Knockout没有解决使用javascript跨浏览器标签进行通信的基本一般问题other questions上有this topic,您选择的任何框架都可以使用相同的解决方案。

但不,Knockout没有尝试解决这个问题。

答案 1 :(得分:0)

如接受的答案中所述,Knockout无法解决交叉表问题。

如果您的问题严格限于在同一浏览器中同步多个标签的情况,那么使用localStorage传递消息(如this answer cited in the accepted answer中所述,似乎是一个理智的解决方案。

问题在于你是否真的不想进一步解决这个问题,并实施某种形式的服务器推送到你的购物页面,这也可以跨浏览器和跨机器工作。

在这种情况下,您需要一些使用WebSocket(真实服务器推送到客户端)的解决方案,可能与旧浏览器的HTTP轮询后备相结合(如果您需要支持这些)。