0

我的骨干收藏有一点问题。我只想显示 6 个模型,并且总是最新的 6 个。我使用 CollectionBinder (Backbone.ModelBinder) 来渲染和显示我的收藏,并使用 RailsFayeSubscriber 将它们与服务器同步。

问题是我不知道如何始终保持集合 6 个模型大。我尝试添加一个 this.on("add") 并在那里使用 .first(6) 来保留我想要的 6 个模型,但问题是我认为 CollectionBinder 或 RailsFayeSubscriber 也有 add-trigger 并抛出我关于集合中缺失模型的错误。

最好的办法是拥有比较器之类的东西,它总是对模型进行排序,但在这种情况下,某种有源滤波器总是保持 6 个模型大。

有任何想法吗?

4

2 回答 2

1

One (kinda hacky) solution would be to interrupt the flow. So currently you have:

  1. collections gets added to
  2. your handler goes off, "messing up" the collection
  3. one of your library's handlers goes off, and gets upset

What you want is:

  1. collections gets added to
  2. one of your library's handlers goes off, and doesn't wig out
  3. your code goes off

There's likely some way to play with Backbone's event system to make the above happen, but you can also cheat:

  1. collections gets added to
  2. your handler goes off, and sets a timeout to "mess up" the collection in 1ms (window.setTimeout(_.bind(this.limitTo6, this), 1))
  3. one of your library's handlers goes off, and doesn't wig out
  4. your timeout (1ms after the normal code flow is done) goes off, and messes up the collection without cheesing off our library
于 2012-07-20T01:05:31.580 回答
0

我在这篇文章中使用了事件聚合器方法

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

这似乎保持了惯用的主干专注于数据操作和更薄的视图。

于 2012-07-20T02:31:44.050 回答