2012-01-29 58 views
3

比方说,我拥有大量的图像模型,并且在任何时候,实际上只会渲染50个缩略图视图。我想给用户选择从集合中看到另外50张随机图像......所以我想给每个图像模型一个onDisplay属性。在backbone.js中,模型了解它的视图是错误的吗?

显示随机方法选取50个随机项并将onDisplay设置为true。其中一些项目可能已经被渲染......如果没有,则创建新的缩略图视图并将其附加到图像模型。如果视图已经呈现,那么它只是重新显示/附加到DOM。

如果模型有一个指向它的指针,那么检查视图的存在似乎是最容易的。但我在这里违反了关注的分离吗?

回答

8

在MVC设计模式中,模型不应该对视图有任何了解。例如,这可以让模型以多种方式查看,例如HTML或呈现在画布元素中。

由此可看出下面的图表所示:

MVC

模型可以更新仅查看间接地例如通过发射事件。

图片复制来自here

0

你为什么不做一个处理缓存视图的外部方法?当模型构建新视图时,不是直接构建它,而是将参数传递给外部方法。

从模型的角度来看,它调用了一个通用的“给我一个视图”函数。这是处理缓存的函数。然后,您可以更改该功能来更改行为,而无需直接修改模型。

1

是的,我同意,你不需要将你的模型与他们的观点相结合。

onDisplay属性很好。如果所有图像模型都位于集合中,则只需让另一个“父”视图监听集合上onDisplay属性的更改。

如果属性发生变化时,“父”视图可以然后渲染/删除缩略图视图(因为他们将子视图)作为必需的。