如果我在angularjs中有5页和5个控制器

如果我在angularjs中有5页和5个控制器,angularjs,cordova,Angularjs,Cordova,嗨,我有5个控制器的5页,我使用的是一个服务,在每个控制器使用注入。是否可以不编辑视图和控制器中的代码,通过在一个视图或控制器中的任意位置编写一次代码来停止服务功能? 例如,我有一个应用程序,它使用服务器检索数据,我可以编写一个简单的代码来限制该服务,而不是我可以访问本地数据的服务器 都是应用程序单例。这意味着,您可以更改服务的状态一次,并且该更改将对所有it用户“可见” 当应用程序请求该服务时,该服务将被实例化。当服务存在时,所有控制器等都将收到对同一服务实例的引用(我仍然希望在所有对该服务的

嗨,我有5个控制器的5页,我使用的是一个服务,在每个控制器使用注入。是否可以不编辑视图和控制器中的代码,通过在一个视图或控制器中的任意位置编写一次代码来停止服务功能? 例如,我有一个应用程序,它使用服务器检索数据,我可以编写一个简单的代码来限制该服务,而不是我可以访问本地数据的服务器

都是应用程序单例。这意味着,您可以更改服务的状态一次,并且该更改将对所有it用户“可见”

当应用程序请求该服务时,该服务将被实例化。当服务存在时,所有控制器等都将收到对同一服务实例的引用(我仍然希望在所有对该服务的引用丢失时,该服务将被垃圾收集)

这意味着,在初始化服务后,所有控制器都可以调用方法,等等——所有这些方法都在同一个实例上,对所有其他实例都可见

下面是一个展示这个概念的例子。在一个控制器中更改factory对象中的值时,该值在整个应用程序中可见。两个控制器都使用修改后的testFactory.name值,因为它在HelloCtrl初始化过程中被修改。添加两个按钮可以很容易地计算factory对象字段中的单击次数,并使两个控制器在更改时显示值

function HelloCtrl($scope, testFactory)
{
    $scope.fromFactory = testFactory.sayHello();
    testFactory.setName("ellitereit");
    $scope.newValue = testFactory.sayHello();
}

function GoodbyeCtrl($scope, testFactory)
{
    $scope.fromFactory = testFactory.sayGoodbye();
}

如果可能的话,请您简要解释一下,请@elliterieti我扩展了答案。有一个JSFIDLE展示了这个概念的实际应用。谢谢你的简短回答。我能理解。但我的使用案例是,我正在开发一款android移动应用程序。我的第一页有选项1。连接到远程服务器(网络计算机中的web服务器)2。访问本地主机服务器(在android mobile中)。我有5个不同的页面,每个页面有5个不同的控制器,每个控制器访问一个公共服务,用于从服务器访问数据。我必须只优化公共服务,以便如果我提供任何服务器ip,它应该使用$http服务从该服务器获取数据,或者如果没有提供服务器ip,那么数据应该来自应用程序的本地存储。你能帮我做这个吗?