Angular如何创建服务?5种方式了解一下!


本文摘自PHP中文网,作者青灯夜游,侵删。

本篇文章给大家介绍一下Angular创建服务的5种方式。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

config配置块

Angular应用的运行主要分为两部分:app.config()和app.run(),config是你设置任何的provider的阶段,从而使应用可以使用正确的服务,需要注意的是在配置块中只有provider能被注入(只有两个例外是$provide和$injector)。而且provider也只能在config中注入。Angular注入服务的5种方式中,只有通过provider和constant注入的服务可以在依赖到config中。

1

2

3

4

5

6

app.controller('MyController', function ($httpProvider) {

    //错误,无法在控制器中注入服务提供者

});

app.config(function ($http) {

    //错误,配置块中只能注入服务

});

相关推荐:《angularjs教程》

关于一些内置的服务

控制器函数是可以被注入的,但是控制器本身是不能被注入到任何东西里面去的,然而,有一个内建的AngularJS服务叫做$controller,它负责设置你的控制器,调用myMod.controller(…)时,你实际上是访问了这个服务的provider。

代码:

1

2

3

myMod.controller('MainController', function($scope) {

  // ...

});

实际上做了以下事情:

1

2

3

4

5

myMod.config(function($controllerProvider) {

  $controllerProvider.register('MainController', function($scope) {

// ...

  });

});

类似的还有filter和directive,filter会使用一个叫做$filter的服务以及它的provider $filterProvider,而directive使用一个叫做$compile的服务以及它的provider $compileProvidr。

服务的5中注入方式

factory()

依赖注入器将使用factory函数创建服务的实例,工厂函数返回一个对象。

1

2

3

4

5

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

    var myService = {};

    //添加myService的一些属性和方法

    return myService;

});

service()

service注入通过传递一个函数给service,然后使用javascript的new操作生成一个服务,也就是说将属性附加到this上即可,使用这个方法要小心javascript的this陷阱,this并不总是指向执行函数本身,也可能指向顶级对象window。

1

2

3

myModule.service('myService', function () {

    this.foo = 'bar';

});

provider()

实际上以上我们提到的factory和service被实现为provider上的语法糖,通过provider注入的服务可以作为提供者在配置块中使用,另外provider必须实现一个$get属性。

阅读剩余部分

相关阅读 >>

20个优秀的Angular开源项目,你了解几个呢?

浅谈Angular如何编译打包?如何使用docker发布?

如何安装和使用Angular cli?(图文详解)

聊聊Angular中的指令(directive)

浅谈Angular中组件(@component)基本知识

聊一聊Angular中的路由(routing)

详解Angular中的material安装与使用

详解javascript中的service workers!

Angular中什么是ivy编译?如何开启ivy编译?

2021年值得尝试的7个Angular前端组件库,快来收藏吧!

更多相关阅读请进入《Angular》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...