关于使用容器的Aurelia文档很明显"每次路由器导航到屏幕时,它都会创建一个子容器来封装与该导航事件相关的所有资源,然后自动注册屏幕&#34 39;在该子容器中的视图模型。如您所知,默认情况下,自动注册会导致视图模型注册为单例。"
但是,我在我的应用程序中看到的是,每当激活相关视图时,默认情况下都会调用所有视图模型构造函数。这不是视图模型" singleton"我理解的行为。
任何人都可以解释我在这里不理解的事情吗?
由于
答案 0 :(得分:5)
了解子容器对生命的影响非常重要。当路由器导航时,它会创建一个子容器,并在该子容器中注册屏幕的视图模型。它是一个单例,作用于该子容器,而不是应用程序级别。因此,当该子容器被处置时(下次有导航),在其中注册的所有单身人士也会被处置。
如果您希望视图模型“比”导航请求周期“更长”,您可以使用@singleton()
装饰器。