离子/角度提供程序/服务-单例-单个实例?

时间:2018-12-08 11:55:16

标签: angularjs ionic-framework

我已经阅读到service(angular)/ provider(ionic)可以特定于组件,或者可以通过在模块级别注册来由组件共享。我知道这是单例概念,所有组件都共享一个实例。我的问题是-假设服务/提供者具有基于登录的userid从db获取数据的代码,那么在这种情况下,单个实例概念如何区分使用该应用程序的所有用户?在这方面有些困惑。

1 个答案:

答案 0 :(得分:0)

据我所知 singleton 是指具有可以与任何其他页面/组件/控制器/ ...共享的内容的单个组件/服务。 但所有这些都是在一个应用实例中发生的。

示例: 可以说,在我们的项目中,我们有3个带有控制器的页面:page1.html, ctrl1.jspage2.html, ctrl2.jspage3.html, ctrl3.js

我们还有1个服务:service1.js

service1.js中,有一个名为getUserName()

的函数

单例的概念将允许从所有3个控制器中调用getUserName()。如果该服务不是sigleton,则意味着它将与一个控制器/页面相关,因此,如果service1.js仅与ctrl1.js相关,则无法从ctrl2.js调用函数getUserName()

重要:所有这一切都在应用程序的一个实例中发生,单例并不表示该服务在应用程序的所有运行实例之间都是共享

这就是说,如果您正在使用服务根据某些参数从数据库中获取数据,那么您执行的逻辑将决定将返回什么数据。