全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

AngularJS基于provider实现全局变量的读取和赋值方法

本文实例讲述了AngularJS基于provider实现全局变量的读取和赋值方法。分享给大家供大家参考,具体如下:

简单全局变量的设置

1,通过var 直接定义global variable,这根纯js是一样的。
2,用angularjs value来设置全局变量 。
3,用angularjs constant来设置全局变量 。

示例代码如下:

在app文件中,声明三种变量

'use strict';
/* App Module */
var test2 = 'tank';     //方法1,定义全局变量
var phonecatApp = angular.module('phonecatApp', [   //定义一个ng-app
 'ngRoute',
 'phonecatControllers',
 'tanktest'
]);
phonecatApp.value('test',{"test":"test222","test1":"test111"}); //方法2定义全局变量
phonecatApp.constant('constanttest', 'this is constanttest');  //方法3定义全局变量

在controller中对全局变量进行读取

'use strict';
/* Controllers */
var phonecatControllers = angular.module('phonecatControllers', []);
phonecatControllers.controller('PhoneListCtrl', ['$scope','test','constanttest',
 function($scope,test,constanttest) {
  $scope.test = test;          //方法2,将全局变量赋值给$scope.test
  $scope.constanttest = constanttest;  //方法3,赋值
  $scope.test2 = test2;         //方法1,赋值
 }]);

注意事项

var test;设置后,无需在controller声明的时候注入,直接使用即可。

value和contant,在app中初始化后,需要在controller声明时候注入到controller中,才能够使用。

这三种方式都存在一个问题,即只能够读取全局变量,无法对全局变量进行修改赋值。在很对业务逻辑中无法满足业务需求。

使用provider实现全局变量。

步骤与上面的value和contant差不多。

在app中完成声明和初始化。

<script type="text/javascript">
    var app = angular.module('ngRouteWxCtb', ['ngRoute','ngCookies']);
    //TODO:provider of globle uid and weixinIsInit param
    app.provider('userService', function () {
      var data = {uid:0,weixinIsInit:false};
      var f = function (uid,weixinIsInit) {
        if (uid != 0)
        {
          data.uid= uid;
          data.weixinIsInit = weixinIsInit;
        }
        return data;
      };
      this.$get = function () {
        return f;
      };
    });
</script>

在controller声明的时候,注入。

app.controller('myCtrl1', function ($scope, userService) {
  var data = userService(0, 0, false);//读取全局变量
}));
app.controller('myCtrl2', function ($scope, userService) {
  var data = userService(123, 111, true);//设置全局变量
}));

通过provider提供的get方法,实现参数的读取和赋值。

注意事项

代码中,我们对provider 的赋值操作进行了取巧设计,当第一个参数等于0的时候,默认是读取,当第一个参数不为0的时候,实现的是设置后进行读取。这样,公用一个get方法即可,无需增加新的方法。

更多关于AngularJS相关内容感兴趣的读者可查看本站专题:《AngularJS指令操作技巧总结》、《AngularJS入门与进阶教程》及《AngularJS MVC架构总结》

希望本文所述对大家AngularJS程序设计有所帮助。


# AngularJS  # provider  # 全局变量  # 读取  # 赋值  # 实例讲解JavaScript预编译流程  # JavaScript 详解预编译原理  # JavaScript运行过程中的“预编译阶段”和“执行阶段”  # 通过JSP的预编译消除性能瓶颈  # JavaScript防止全局变量污染的方法总结  # JS全局变量和局部变量最新解析  # 浅谈JavaScript的全局变量与局部变量  # Angularjs全局变量被作用域监听的正确姿势  # javascript中局部变量和全局变量的区别详解  # 浅析JavaScript预编译和暗示全局变量  # 第一个  # 的是  # 进阶  # 相关内容  # 感兴趣  # 给大家  # 三种  # 不为  # 一个问题  # 更多关于  # 中对  # 才能够  # 所述  # 程序设计  # 进行了  # 这根  # 很对  # 这三种  # 操作技巧 


相关文章: 建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  西安大型网站制作公司,西安招聘网站最好的是哪个?  建站之星2.7模板快速切换与批量管理功能操作指南  如何选择高效可靠的多用户建站源码资源?  建站之星代理商如何保障技术支持与售后服务?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  如何设计高效校园网站?  如何做静态网页,sublimetext3.0制作静态网页?  太原网站制作公司有哪些,网约车营运证查询官网?  北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  常州企业建站如何选择最佳模板?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  教学网站制作软件,学习*后期制作的网站有哪些?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  网站专业制作公司有哪些,做一个公司网站要多少钱?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  如何高效利用亚马逊云主机搭建企业网站?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  公司网站制作需要多少钱,找人做公司网站需要多少钱?  建站主机选哪家性价比最高?  南宁网站建设制作定制,南宁网站建设可以定制吗?  微课制作网站有哪些,微课网怎么进?  建站之星logo尺寸如何设置最合适?  北京网站制作网页,网站升级改版需要多久?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  存储型VPS适合搭建中小型网站吗?  宝塔面板如何快速创建新站点?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  如何在Windows环境下新建FTP站点并设置权限?  已有域名和空间如何搭建网站?  高性能网站服务器配置指南:安全稳定与高效建站核心方案  智能起名网站制作软件有哪些,制作logo的软件?  如何在IIS中新建站点并配置端口与物理路径?  如何在腾讯云免费申请建站?  香港服务器网站推广:SEO优化与外贸独立站搭建策略  头像制作网站在线制作软件,dw网页背景图像怎么设置?  音响网站制作视频教程,隆霸音响官方网站?  如何选择可靠的免备案建站服务器?  建站主机选择指南:服务器配置与SEO优化实战技巧  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  家庭建站与云服务器建站,如何选择更优?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  建站之星ASP如何实现CMS高效搭建与安全管理?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  如何配置支付宝与微信支付功能?  定制建站如何定义?其核心优势是什么? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。