Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 角度指令的非单例服务_Angularjs - Fatal编程技术网

Angularjs 角度指令的非单例服务

Angularjs 角度指令的非单例服务,angularjs,Angularjs,我有一个角度组件,在同一页中多次重复使用 angular组件依赖于服务,因为它被多次重用,我希望每个组件都有一个新的服务实例,这可能吗?或者我必须使用for循环并在服务内部为每个组件创建一个单独的对象来实现相同的效果吗 编辑:我正在使用angular 1您可以在每个组件中使用该服务作为DI,然后每次调用该服务创建一个新实例。您还可以在函数中设置“缓存”:true,这样就不会对同一数据进行多个api调用。(仅适用于“GET”方法)。这是否澄清了您的疑问?您可以创建一个工厂(而不是服务),它返回一个

我有一个角度组件,在同一页中多次重复使用

angular组件依赖于服务,因为它被多次重用,我希望每个组件都有一个新的服务实例,这可能吗?或者我必须使用for循环并在服务内部为每个组件创建一个单独的对象来实现相同的效果吗


编辑:我正在使用angular 1

您可以在每个组件中使用该服务作为DI,然后每次调用该服务创建一个新实例。您还可以在函数中设置
“缓存”:true
,这样就不会对同一数据进行多个api调用。(仅适用于“GET”方法)。这是否澄清了您的疑问?

您可以创建一个工厂(而不是服务),它返回一个函数,您甚至可以向该函数提供一些数据(将其视为构造函数)

angular
.module('应用程序')
.工厂(“我的工厂”,我的工厂);
函数MyFactory(){
return(someOptions)=>({
myProperty:someOptions.myProperty,
myMethod:()=>{
// ...
}
});
}
您可以像这样在控制器中使用它。每次调用
MyFactory({…})
都会创建一个新的单独的“实例”

angular
.module('应用程序')
.controller(“MyController”,MyController);
功能MyController(MyFactory){
const myFactoryObj=MyFactory({myProperty:'test'});
}

如果您使用的是AngularJS,请删除AngularJS标记,这些是不同的东西。但是,您想与服务共享一些数据吗?。如果没有,那么您可以使用简单的clase作为服务,并在组件内创建该类的实例。