跟踪Knockout.js订阅者

时间:2013-11-19 08:35:22

标签: javascript ajax knockout.js

我有一个存储在服务器上的大量实时数据。层次结构永远不会改变,但值会不断变化。在我的客户端,我将层次结构复制为淘汰模型,并使用重复的ajax调用保持更新。

在任何时候,我的客户端中只会显示层次结构的一小部分,因此我只想对当前显示的值进行ajax调用。

是否有一些“标准”方法可以计算当前订阅者的数量,或者更好地跟踪每个订阅者以测试其可见性?

谢谢!


感谢您回复getSubscriptions.Count()。这给了我一个解决方案 - 获取ajax轮询功能,以便每次轮询时搜索用户的viewmodel。我真正喜欢做的事情是允许每次订阅数量变为零时通知轮询功能,因此它可以启动和停止轮询 - 这将是更多的处理器 - 每次搜索viewmodel都有效。什么是完美的,如果有一个计算的observable作为主要observable的子节点,比如说“subscriptionsCount()”,那么poller(或其他任何人)可以订阅它。

我考虑过的另一种方法是将我的'value'包装在计算的observable la http://www.knockmeout.net/2011/06/lazy-loading-observable-in-knockoutjs.html中。这提供了一种机制,可以在需要项目时通知轮询器,但不能解决问题在不再需要时通知轮询者。

1 个答案:

答案 0 :(得分:14)

getSubscriptionsCount()

上有方法observable
self.name = ko.observable("Mike");
//...
var numberOfSubscribers = self.name.getSubscriptionsCount();  

JSFiddle DEMO