我已经阅读到service(angular)/ provider(ionic)可以特定于组件,或者可以通过在模块级别注册来由组件共享。我知道这是单例概念,所有组件都共享一个实例。我的问题是-假设服务/提供者具有基于登录的userid从db获取数据的代码,那么在这种情况下,单个实例概念如何区分使用该应用程序的所有用户?在这方面有些困惑。
答案 0 :(得分:0)
据我所知 singleton 是指具有可以与任何其他页面/组件/控制器/ ...共享的内容的单个组件/服务。 但所有这些都是在一个应用实例中发生的。
示例:
可以说,在我们的项目中,我们有3个带有控制器的页面:page1.html, ctrl1.js
,page2.html, ctrl2.js
,page3.html, ctrl3.js
我们还有1个服务:service1.js
在service1.js
中,有一个名为getUserName()
单例的概念将允许从所有3个控制器中调用getUserName()
。如果该服务不是sigleton,则意味着它将与一个控制器/页面相关,因此,如果service1.js仅与ctrl1.js相关,则无法从ctrl2.js调用函数getUserName()
重要:所有这一切都在应用程序的一个实例中发生,单例并不表示该服务在应用程序的所有运行实例之间都是共享。
这就是说,如果您正在使用服务根据某些参数从数据库中获取数据,那么您执行的逻辑将决定将返回什么数据。