3
模型状态应存储在Angular.js中的何处
我发现Angular对模型的使用令人困惑。Angular似乎采用了模型可以随心所欲的方法-IE Angular不包括显式的模型类,您可以将原始JavaScript对象用作模型。 在我所见过的几乎每个Angular示例中,模型实际上都是手动创建的对象,或者是通过Resource通过API调用返回的对象。因为我看过的几乎每个Angular示例都很简单,所以通常将模型数据存储在$ scope中的控制器中,并且与模型相关的任何状态(例如选择)也都存储在控制器中的$ scope中。这对于简单的应用程序/示例来说效果很好,但是当应用程序变得更加复杂时,这似乎过于简化了。例如,如果上下文发生更改,则存储在控制器中的模型状态可能会变得上下文相关并丢失。A控制器存储selectedGallery和selectedPhoto只能存储全局selectedImage,而不是selectedPhoto每个画廊。在这种情况下,每个画廊使用一个控制器可能会解决此问题,但从UI角度看似乎很浪费,而且可能是不合适和不必要的。 Angular对模型的定义似乎更接近我认为的VO / DTO,它是在服务器和客户端之间传递的一个愚蠢的对象。我的直觉是将这样的对象包装在我认为的模型中-一种类,该类维护与DTO / VO相关的状态(例如选择),根据需要提供变体来操纵DTO / VO,并通知其余对象对基础数据进行更改的应用。显然,Angular的绑定很好地照顾了最后一部分,但是我仍然看到前两个职责的强大用例。 但是,我在所查看的示例中并未真正看到过这种模式,但是我也没有看到我认为可伸缩的替代方案。Angular似乎通过强制使用Singletons隐式地不鼓励将Services用作模型(我知道有解决此问题的方法,但它们似乎并未得到广泛使用或认可)。 那么我应该如何保持模型数据的状态呢? [编辑]这个问题的第二个答案很有趣,接近我目前正在使用的答案。