2012-07-20 121 views
0

我的主干集合有点问题。我只想显示6个模型,并且总是最新的6.我使用CollectionBinder(Backbone.ModelBinder)来呈现和显示我的集合,并使用RailsFayeSubscriber将它们与服务器同步。backbone.js集合的有效过滤器

问题是,我不知道如何始终保持集合6模型大。我已经尝试添加一个this.on(“add”),并使用.first(6)来保持我想要的6个模型,但问题是我认为CollectionBinder或RailsFayeSubscriber也有添加触发器并抛出我有关集合中缺少模型的错误。

最好的事情就是拥有像比较器这样的东西,总是对模型进行排序,但在这种情况下,某种有源滤波器始终保持6个模型的大。

任何想法?

+0

允许'GET'到'url'像'/ post/latest'等'新集合'绑定到。该网址应该返回你想要的最新的6个。每分钟轮询一次以加载最新的。没有更多需要 – Deeptechtons 2012-07-20 05:07:51

回答

1

一个(有点哈克)解决方案将是中断流程。所以目前你有:

  1. 藏品被添加到
  2. 处理程序熄灭,“搞乱”集合
  3. 图书馆的处理的一个熄灭,并得到不高兴

什么你想要的是:

  1. 藏品被添加到
  2. 一个图书馆的处理器的熄灭,并且不假发出来
  3. 代码熄灭

有可能某种方式与骨干网的事件系统作出上述发生打,但你也可以欺骗:

  1. 藏品被添加到
  2. 处理程序会熄灭,并设置一个超时以“搞乱”集合中的1毫秒(window.setTimeout(_.bind(this.limitTo6, this), 1)
  3. 图书馆的处理的一个熄灭,并且不出来假发
  4. 您的超时时间(1ms的正常码流完成后)熄灭,食堂收集不cheesing了我们的图书馆
+0

谢谢!它有效,但我仍然更喜欢更“优雅”的解决方案。 – jonepatr 2012-07-20 01:27:44

+0

我明白了,但是因为你的基本问题是别人的代码,所以任何可能的解决方案的优雅都会受到限制(因为真正优雅的解决方案是修改他们的代码以更好地发挥你的代码)。您可能希望查找的一个选项是重新排列绑定事件的顺序,并且超出该范围......好吧,祝您好运:-) – machineghost 2012-07-20 01:50:20

0

我已经使用了事件聚合方法在此post

扭转不是将聚合器添加到视图中,而是将其添加到集合中。创建第二个集合,充当您的“视图模型”,其中包含您的6个项目。第二个集合可以绑定到完整集合上的添加/重置事件。然后,事件处理程序可以填充绑定的集合并触发重置事件,以便您的视图代码看起来与以往一样。

这似乎保持了对数据操作和更薄视图的习惯性骨干关注。