如果我多个controller共享一份数据,是在某个比较上层的控制器上保存数据,还是用factory保存这个需要共享的数据,如果用service会怎么样。
为情所困2017-05-15 16:55:11
이 질문은 데이터를 사용할 때 범위 수준에서 데이터의 비즈니스 관련성이 얼마나 강한지에 따라 달라집니다.
즉, 특정 범위가 이를 사용할 때 위쪽으로 검색하여 특정 상위 범위를 확실히 찾을 수 있으며 범위의 상속을 사용하여 공유할 수 있다는 것을 매우 확신합니다. 그러나 중복된 개체 이름을 피하기 위해 각 컨트롤러에 고유한 네임스페이스를 제공하려면 controller as
구문을 사용하는 것이 좋습니다. 실제로 이 데이터를 $rootScope
에 저장하여 전역적으로 공유할 수도 있습니다(그러나 $rootScope
는 가벼울수록 좋기 때문에 권장되지 않음). -level 전역 컨트롤러를 사용하여 저장할 수도 있습니다. controller as
的语法给每一个 controller 唯一的命名空间以避免对象重名。实际上你甚至可以把这个数据保存在 $rootScope
来全局共享(但是不推荐,因为 $rootScope
越轻越好),或者是有一个最顶层的全局 controller 来保存也可以。
不强,就是说你无法确定何时何处会用到这个数据,那就用依赖注入咯。纯数据的话,建议用 module.value
(可变数据)或 module.constant
(不可变数据),当然也可以用 module.factory
返回一个对象(这就和 module.value
一样一样的)。module.service
常用于返回一个构造器,你可以利用它生成不同的对象实例(区别于其他的单例 service)。
实际上 module.value/constant/factory/service
全都是 module.provider
module.value
(가변 데이터) 또는 module.constant
(불변 데이터)를 사용하는 것이 좋습니다. 물론 module.factory code>도 사용할 수 있습니다. code>는 객체를 반환합니다(module.value
와 동일). module.service
는 생성자를 반환하는 데 자주 사용되며, 생성자를 사용하여 다른 개체 인스턴스(다른 싱글톤 서비스와 다름)를 생성할 수 있습니다. 🎜
🎜사실 module.value/constant/factory/service
는 모두 module.provider
의 변형(구문 설탕)입니다. 종속성 주입 및 서비스에 대한 공식 문서를 읽어보세요. 이 장을 읽고 나면 모든 것을 이해할 수 있을 것입니다. 🎜회신하다0
滿天的星座2017-05-15 16:55:11
서비스 사용은 일반적으로 데이터를 저장하는 데 사용되며, 팩토리는 일반적으로 여러 서비스를 호출하거나 반환하는 데 사용됩니다. 물론 실제로는 차이점을 확인할 수 있습니다. 이것 아니면 이것
滿天的星座2017-05-15 16:55:11
실제로는 팩토리와 서비스 사이에 차이점을 찾지 못했습니다. js 객체가 마음에 들면 전자를 선택하세요. js oop이 마음에 들면 서비스를 사용하세요. . . 한 번역에서는 이렇게 설명합니다.