AngularJS学习笔记(七)服务

出于内存占用和性能的考虑,控制器只会在需要时被实例化,并且不再需要就会被销毁。这意味着每次切换路由或者重新加载视图时,控制器只会在需要时被实例化,并且不再需要就会被销毁。这意味着每次切换路由或重新加载视图时,当前的控制器会被AngularJS清除掉。

服务提供了一种能够在应用的整个生命周期内保持数据的方法,它能够在控制器之间进行通信,并且能保证数据的一致性。

AngularJS中可以创建自己的服务,也可以使用内置的服务。

AngularJS的五种创建模式:value、constant、factory、service、provider。

value()
  • 变量
    此方法接收两个参数:
  • name(字符串):需要注册的服务名
  • value(值):将这个值作为可注入的实例返回
constant()
  • 常量
    可以将一个已经存在的变量值注册为服务,并将其注入到应用的其他部分当中。例如,假设我们需要给后端服务一个apiKey,可以用constant()将其当做常量保存下来。
    此方法接收两个参数:
  • name(字符串):需要注册的服务名
  • value(值):将这个值作为可注入的实例返回
    constant()的值不可被改变
factory()
  • 最常用
    接收两个参数:
  • name(字符串):需要注册的服务名。
  • getFn(函数):会在AngularJS创建服务实例时被调用。
service()

注册一个支持构造函数的服务,它允许我们为服务注册一个构造函数。
接受两个参数:

  • name(字符串):要注册的服务名称。
  • constructor(函数):构造函数,调用它来实例化对象。

服务的应用

  • 在多个控制器中调用服务。
  • 代码示例:
<body>
<div ng-app="myApp">
   <div ng-controller="FCtrl">
    <input type="text" ng-model="data.msg">
    {{data.msg}}
   </div>
    <div ng-controller="SCtrl">
        <input type="text" ng-model="data.msg">
        {{data.msg}}
    </div>
</div>

</body>
<script>
    var app = angular.module('myApp', []);
    app.factory('Data',function(){
        return{msg:"我来自factory"}
    })
    app.controller('FCtrl', function($scope,Data) {
        $scope.data = Data;
    });
    app.controller('SCtrl', function($scope,Data) {
        $scope.data = Data;
    });
</script>

可以看到,我们使用了两个控制器,两个控制器的数据来源都来自Data,所以这段代码的运行结果是两个表单数据,改变一个时另一个也会同时改变。

  • 效果:
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,985评论 19 139
  • 出于内存占用和性能的考虑,控制器只会在需要时被实例化,并且不再需要就会被销毁。这意味着每次切换路由或重新加载视图时...
    oWSQo阅读 3,359评论 0 1
  • AngularJS是什么 AngularJS的官方文档这样介绍它: 完全使用JavaScript编写的客户端技术。...
    oWSQo阅读 5,173评论 0 10
  • ng-model 指令ng-model 指令 绑定 HTML 元素 到应用程序数据。ng-model 指令也可以:...
    壬万er阅读 4,371评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,726评论 18 399

友情链接更多精彩内容