84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
如果我多个controller共享一份数据,是在某个比较上层的控制器上保存数据,还是用factory保存这个需要共享的数据,如果用service会怎么样。
走同样的路,发现不同的人生
这个问题取决于你用数据的时候,这个数据的业务关联性在你的 scope 层级里到底有多强。
强,就是说你非常确定在某个 scope 用到它的时候,向上找一定可以找到某个父级 scope,那就可以利用 scope 的继承性来共享。不过建议要用 controller as 的语法给每一个 controller 唯一的命名空间以避免对象重名。实际上你甚至可以把这个数据保存在 $rootScope 来全局共享(但是不推荐,因为 $rootScope 越轻越好),或者是有一个最顶层的全局 controller 来保存也可以。
controller as
$rootScope
不强,就是说你无法确定何时何处会用到这个数据,那就用依赖注入咯。纯数据的话,建议用 module.value (可变数据)或 module.constant(不可变数据),当然也可以用 module.factory 返回一个对象(这就和 module.value 一样一样的)。module.service 常用于返回一个构造器,你可以利用它生成不同的对象实例(区别于其他的单例 service)。
module.value
module.constant
module.factory
module.service
实际上 module.value/constant/factory/service 全都是 module.provider 的变种(语法糖),好好把官方文档里关于依赖注入和服务那一章看一遍你就全明白了。
module.value/constant/factory/service
module.provider
用service咯,service一般用来存数据,factory一般是用来调用多个service~或者返回方法,当然功能都是可以互用的,其实感觉是差不多的,至于他们的区别你可以去看这个或者 这个
其实我对factory和service的区别没发现有什么不同,如果你喜欢js的object,那就前者,如果喜欢js的oop,那就service。。。有篇译文是这样解释的。
这个问题取决于你用数据的时候,这个数据的业务关联性在你的 scope 层级里到底有多强。
强,就是说你非常确定在某个 scope 用到它的时候,向上找一定可以找到某个父级 scope,那就可以利用 scope 的继承性来共享。不过建议要用
controller as
的语法给每一个 controller 唯一的命名空间以避免对象重名。实际上你甚至可以把这个数据保存在$rootScope
来全局共享(但是不推荐,因为$rootScope
越轻越好),或者是有一个最顶层的全局 controller 来保存也可以。不强,就是说你无法确定何时何处会用到这个数据,那就用依赖注入咯。纯数据的话,建议用
module.value
(可变数据)或module.constant
(不可变数据),当然也可以用module.factory
返回一个对象(这就和module.value
一样一样的)。module.service
常用于返回一个构造器,你可以利用它生成不同的对象实例(区别于其他的单例 service)。实际上
module.value/constant/factory/service
全都是module.provider
的变种(语法糖),好好把官方文档里关于依赖注入和服务那一章看一遍你就全明白了。用service咯,service一般用来存数据,factory一般是用来调用多个service~或者返回方法,当然功能都是可以互用的,其实感觉是差不多的,至于他们的区别你可以去看这个或者 这个
其实我对factory和service的区别没发现有什么不同,如果你喜欢js的object,那就前者,如果喜欢js的oop,那就service。。。有篇译文是这样解释的。