我是一个刚接触angularjs 的菜鸟,所以在用angular时,会往controller里添加很多不必要的逻辑,当同事看到我写的代码时,说没有看下去的动力。作为一只积极向上的小菜鸟,我询问了同事也上网查询了一些相关面。其实用angular,应该把大部分业务逻辑和持久化的数据放在service里,并且这些数据可以在不同的controller之间使用,反而controller相对来说应该很薄。每次切换和刷新页面时,angular会清空当前的controller。angular提供了3种方法来创建并注册service。

1、factory

2、service

3、provider(我本身用的比较少,所以相关体会待以后补充)

简单说说它们的区别和用法:

1、用factory是创建一个对象,为它添加属性和方法,方便调用的时候返回想要的数据。

app.controller('myCtrl',function($scope,myFactory){

  $scope.hello = myFactory.getHello();

});

app.factory('myFactory',function(){

  var _hello = 'hello';

  var factory = {};

  factory.getHello = function(){

    return _hello;

  };

  return factory;

});

2、用service是用new关键字进行实例化。所以是在给“this”添加属性,然后service返回“this”。当把service传进controller以后,在controller里"this"上的属性就可以通过service来使用。

app.controller('myCtrl',function($scope,myService){

  $scope.hello = myService.getHello();

});

app.factory('myService',function(){

  var _hello = 'hello';

  this.getHello = function(){

    return _hello;

  };

  return factory;

});

3、provider这部分用的比较少,相关体会以后补上。

转载于:https://www.cnblogs.com/sheting/articles/5027295.html

angular之factory、service、provider相关推荐

  1. angularjs 中 Factory,Service,Provider 之间的区别

    本片文章是使用了 angularjs 中使用 service 在controller 之间 share 对象和数据 的code(http://jsfiddle.net/kn46u0uj/1/) 来进行 ...

  2. AngularJS中service,factory,provider的区别(转载:http://my.oschina.net/tanweijie/blog/295067)...

    目录[-] 一.service引导 二.service 1.factory() ‍2.service()‍ ‍3.provider()‍‍ 一.service引导 刚开始学习Angular的时候,经常 ...

  3. Introduction to the Service Provider Interfaces--官方文档

    地址:https://docs.oracle.com/javase/tutorial/sound/SPI-intro.html What Are Services? Services are unit ...

  4. Angular $injector:unpr Unknown provider 问题原因汇总

    Unknown provider: tProvider <- t 对于很多Angular 1.x 的使用者来说,是非常头疼的一件事情,因为使用者根本不知道原因在哪里. 本文总结了迄今为止所有导致 ...

  5. 服务提供者框架(Service Provider Framework)

    服务提供者框架是指:多个服务提供者实现一个服务,系统为客户提供多个实现, 并把它们从多个实现中解耦出来.服务提供者的改变对它们的客户端是透明的,这样提供了更好的可扩展性.如JDBC,JMS等就是服务提 ...

  6. java provider_Java SPI(Service Provider Interface)

    //ServiceLoader实现了Iterable接口,可以遍历所有的服务实现者 public final class ServiceLoader implements Iterable{//查找配 ...

  7. Java中的SPI(Service Provider Interface介绍及示例

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 一个服务 ...

  8. Java基础学习总结(145)——Java SPI(Service Provider Interface)简介

    SPI 简介 SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制.一个服务(Service)通常指的是已知的接口或者抽象类,服务提供方就是对 ...

  9. Error:Initialization error (angular 2 language service). Cannot read property 'CommandTypes' of unde

    @Error:Initialization error (angular 2 language service). Cannot read property 'CommandTypes' of und ...

  10. webpack打包angularjs后出现Angular $injector:unpr Unknown provider的错误及解决

    文章目录 问题 原因 解决 附 问题 一个angularjs1.x的历史项目,webpack3做的打包,打出来的包一起有几十M,因为一直内网运行,虽然包大了点,但是还能够接受. 因为最近有一些客户对这 ...

最新文章

  1. sizeof和strlen()区别
  2. 【数据结构与算法】【算法思想】【MySQL数据库索引】B+树
  3. 新四则运算 合作完成
  4. 做游戏,学编程(C语言) 17 猪小弟
  5. VMWare关闭beep声
  6. 「日常训练」Queue(Codeforces Round 303 Div.2 D)
  7. [BZOJ1999][codevs1167][Noip2007]Core树网的核
  8. 电子版白底寸照如何制作
  9. 如何在海量元素中(例如 10 亿无序、不定长、不重复)快速判断一个元素是否存在?
  10. python中 jsonchema 与 shema 效率比较
  11. 机器学习入门课程笔记(一)——deeplearning.ai: Neural Networks and Deep Learning
  12. Spring 中的Advice类型介绍
  13. 图像特征之SURF特征匹配
  14. Python遥感可视化 — Basemap作Albers投影
  15. ROS系统安装 kinetic (超详细)
  16. PointRCNN:三维目标检测
  17. Stackoverflow介绍
  18. 改造ueditor 在线图片功能 添加 删除 功能
  19. 函数 atoi() 和 itoa() 的 C 语言实现。
  20. c加加中break_C语言break语句

热门文章

  1. 今天有人问,为何汝粉丝这么少?
  2. 回忆NWT开工,还要吾亲自布网线
  3. 热烈庆祝博客排名进入前一万(8448)
  4. 为什么家里pm25比外面高_夫妻感情很好,男人为什么还会找情人?这是我听过最好的答案...
  5. idea 新建spring clound 项目_手把手教你spring源码搭建
  6. mysql group by聚合字段合并_mysql groupby 字段合并问题(group_concat)
  7. js时间和时间戳之间如何转换(汇总)
  8. 交换机的VLAN技术
  9. Entity Framework 延伸系列目录
  10. 垃圾文件粉碎机 防止恢复保安全