0

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

4

1 回答 1

1

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

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

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

这是一个展示这个概念的jsFiddle 。当工厂对象中的值在一个控制器中更改时,它在整个应用程序中都是可见的。两个控制器都使用 testFactory.name 的修改值,因为它在 HelloCtrl 的初始化期间被修改。添加两个按钮来计算工厂对象字段中的点击次数并让两个控制器在值发生变化时显示值是相当容易的。

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

function GoodbyeCtrl($scope, testFactory)
{
    $scope.fromFactory = testFactory.sayGoodbye();
}
于 2013-08-07T12:15:55.847 回答