林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka

摘要:本文要讲讲Angular中value vs. constant以及全局变量的设置

本教程使用AngularJS版本:1.5.3

AngularJs GitHub: https://github.com/angular/angular.js/

AngularJs下载地址:https://angularjs.org/

AngualrJS中设置全局变量,即每个Controller中都可以访问的变量,主要有以下几种方法:

1、通过var 直接定义global variable,相当于直接用js

2.、用angularjs rootscope来设置全局变量 。

3、用angularjs value来设置全局变量 。

4、用angularjs constant来设置全局变量 。

5、定义服务传值

这里第1种很简单,不说。下面从第2-5来说说

一、angularjs rootscope来设置全局变量

像使用rootscope,笔者的建议是放在run中,这里其这controller中都不用引入rootscope,直接使用需要的全局变量就可以了。

  1. appCommon.run(function($rootScope) {
  2. $rootScope.paginationConf = {
  3. currentPage : 1, // 分页开始
  4. itemsPerPage : 15, // 分页每页显示条数
  5. };
  6. })

然后,其它Controller要用,直接

  1. app.controller('merchantController', function($scope) {
  2. var   limit = $scope.paginationConf.itemsPerPage;
  3. var   pageIndex  = $scope.paginationConf.currentPage;
  1. .......................................
  2. })

这里需要注意的是,每个Controller层都会先在当前的scope找需要的变量,找不到,再到rootscope上去寻找。如果还是找不到,就会报错。

二、用angularjs value来设置全局变量

使用实例如下:

  1. <!DOCTYPE html>
  2. <html lang="zh" ng-app="myApp">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>AngularJS学习</title>
  6. <script type="text/javascript" src="./1.5.3/angular.min.js"></script>
  7. </head>
  8. <body>
  9. <div ng-controller="myCtrl1">
  10. <button ng-click="onclick1()">请点击我1</button>
  11. {{value1}}
  12. </div>
  13. <div ng-controller="myCtrl2">
  14. <button ng-click="onclick2()">请点击我2</button>
  15. {{value2}}
  16. </div>
  17. </body>
  18. <script type="text/javascript">
  19. var app = angular.module('myApp', []);
  20. app.value('myValue',{"value1":"林炳文","value2":"hello world",value3:1});
  21. app.controller('myCtrl1', function($scope,myValue) {
  22. $scope.onclick1 = function() {
  23. $scope.value1 = myValue.value1 + (++myValue.value3);
  24. };
  25. });
  26. app.controller('myCtrl2', function($scope,myValue) {
  27. $scope.onclick2 = function() {
  28. $scope.value2 = myValue.value2 +  (++myValue.value3);
  29. };
  30. });
  31. </script>
  32. </html>

效果:

三、用angularjs constant来设置全局变量

使用实例

  1. <!DOCTYPE html>
  2. <html lang="zh" ng-app="myApp">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>AngularJS学习</title>
  6. <script type="text/javascript" src="./1.5.3/angular.min.js"></script>
  7. </head>
  8. <body>
  9. <div ng-controller="myCtrl1">
  10. <button ng-click="onclick1()">请点击我1</button>
  11. {{value1}}
  12. </div>
  13. <div ng-controller="myCtrl2">
  14. <button ng-click="onclick2()">请点击我2</button>
  15. {{value2}}
  16. </div>
  17. </body>
  18. <script type="text/javascript">
  19. var app = angular.module('myApp', []);
  20. app.constant('myConstant',{"value1":"林炳文","value2":"hello world",value3:1});
  21. app.controller('myCtrl1', function($scope,myConstant) {
  22. $scope.onclick1 = function() {
  23. $scope.value1 = myConstant.value1 + (++myConstant.value3);
  24. myConstant.value1 = $scope.value1;
  25. myConstant.value2 = $scope.value1;
  26. };
  27. });
  28. app.controller('myCtrl2', function($scope,myConstant) {
  29. $scope.onclick2 = function() {
  30. $scope.value2 = myConstant.value2 +  (++myConstant.value3);
  31. myConstant.value1 = $scope.value2;
  32. myConstant.value2 = $scope.value2;
  33. };
  34. });
  35. </script>
  36. </html>

效果:

value与constant区别

value不可在config里注入,constant可以。下面是笔者做的一个测试

  1. app.constant('myConstant',{"value1":"林炳文","value2":"hello world",value3:1});
  2. app.value('myValue',{"value1":"林炳文","value2":"hello world",value3:1});

然后在config来引入:

  1. app.config(function(myValue){
  2. ..
  3. });

报错如下:

如果使用

  1. app.config(function(myConstant){
  2. //可以得到constant定义的'myConstant'
  3. });

一切正常

四、定义服务传值

这是Java中最常用的方法了,其实就相当于定义一个对象的服务中,并设置get/set方法。通过这两个方法来实时更新与获取数据

  1. <!DOCTYPE html>
  2. <html lang="zh" ng-app="myApp">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>AngularJS入门学习</title>
  6. <script type="text/javascript" src="./1.5.3/angular.min.js"></script>
  7. </head>
  8. <body>
  9. <div ng-controller="childCtrl1">
  10. {{name}}
  11. <button ng-click="setName()">set name to jack jack jack</button>
  12. </div>
  13. <div ng-controller="childCtrl2">
  14. {{name}}
  15. <button ng-click="setName()">set name to tom tom tom</button>
  16. </div>
  17. </body>
  18. <script type="text/javascript">
  19. var app = angular.module('myApp', []);
  20. app.factory('dataService', function() {
  21. var name = '我是林炳文';
  22. var service = {};
  23. service.getName = function() {
  24. return name;
  25. };
  26. service.setName = function(newName) {
  27. name = newName;
  28. };
  29. return service;
  30. });
  31. app.controller('childCtrl1', function($scope,dataService) {
  32. $scope.name = dataService.getName();
  33. $scope.setName = function() {
  34. dataService.setName( "set name to jack jack jack");
  35. $scope.name = dataService.getName();
  36. };
  37. });
  38. app.controller('childCtrl2', function($scope,dataService) {
  39. $scope.name = dataService.getName();
  40. $scope.setName = function() {
  41. dataService.setName( "set name to tom tom tom");
  42. $scope.name = dataService.getName();
  43. };
  44. });
  45. </script>
  46. </html>

效果:

跟我学AngularJS:全局变量设置之value vs constant vs rootscope vs 服务[转]的更多相关文章

  1. Adobe Edge Animate –EdgeCommons Log和全局变量设置功能

    Adobe Edge Animate –EdgeCommons Log和全局变量设置功能 版权声明: 本文版权属于 北京联友天下科技发展有限公司. 转载的时候请注明版权和原文地址. 一.Log功能 当 ...

  2. ios开发中全局变量设置和调用方法

    ios开发中,全局变量设置和调用方法如下:在AppDelegate.h文件中设置全局变量:@interface ***AppDelegate{NSString *myName;}@property ( ...

  3. AngularJS动态设置CSS

    使用AngularJS动态设置CSS大致有2种思路: 1.通过动态设置class名称 比如先定义2个样式: .show-true{    display:block;} .show-flase{    ...

  4. 跟我学AngularJs:Controller数据共享、继承、通信使用具体解释

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主讲了AngularJs中的Controller中数据共享.继承.通信的具体使用 本 ...

  5. 从0开始学angularjs-笔记02

    上一节课主要跟大家讲解了angularjs的几种特性和看了一个简单的双向绑定的例子.最近都没有时间写博客了....忙成狗呀...今天周末,在写一篇吧~~ 今天主要跟大家详细讲解一下angularjs的 ...

  6. 跟我学AngularJs:AngularJs入门及第一个实例

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:主要给大家介绍了AngularJs及其特性,并以3个实例来做说明. 本教程使用Angul ...

  7. iOS 全局变量设置的几种方式~

    在iOS开发过程中关于全局变量的几个方法 1. 在APPDelegate中声明并初始化全局变量.AppDelegate可以在整个应用程序中调用,在其他页面中可以使用代码段获取AppDelegate的全 ...

  8. 跟我学AngularJs:Service、Factory、Provider依赖注入使用与差别

    林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka        本教程使用AngularJs版本号:1.5.3        AngularJ ...

  9. postman全局变量设置

    1.点击小齿轮进入到变量添加页面,点击Globals添加全局变量 2.输入变量名称和变量值 3.接口中设置变量

随机推荐

  1. mysql error You must reset your password using ALTER USER statement before executing this statement.

    mysql修改密码Your password does not satisfy the current policy requirements 出现这个问题的原因是:密码过于简单.刚安装的mysql的 ...

  2. 自定义PreferenceActivity和PreferenceFragment的样式

    感谢:http://blog.csdn.net/luck_apple/article/details/7064004 这篇文章讲的是如何定义fragment的样式,基本布局都是从源码中弄过来的.通过设 ...

  3. [转]mysql 一个表两列的值交换

    FROM : http://bbs.csdn.net/topics/380025779 mysql> select * from test1 +------+-------+-------+ | ...

  4. B样条

    在数学的子学科数值分析里,B-样条是样条曲线一种特殊的表示形式.它是B-样条基曲线的线性组合.B-样条是贝兹(贝塞尔)曲线的一种一般化,可以进一步推广为非均匀有理B样条(NURBS),使得我们能给更多 ...

  5. EntityFramework6 快速入门教程【转】

    https://www.cnblogs.com/wujingtao/p/5401113.html 不得不说EF在国内实在是太小众,相关的技术文章真实屈指可数,而且很多文章都很旧了,里面使用的版本跟如今 ...

  6. [leetcode]Word Ladder @ Python

    原题地址:https://oj.leetcode.com/problems/word-ladder/ 题意: Given two words (start and end), and a dictio ...

  7. [leetcode]Permutations @ Python

    原题地址:https://oj.leetcode.com/problems/permutations/ 题意: Given a collection of numbers, return all po ...

  8. [leetcode]Word Ladder II @ Python

    [leetcode]Word Ladder II @ Python 原题地址:http://oj.leetcode.com/problems/word-ladder-ii/ 参考文献:http://b ...

  9. (十一) 整合spring cloud云架构 - SSO单点登录之OAuth2.0登录流程(2)

    上一篇是站在巨人的肩膀上去研究OAuth2.0,也是为了快速帮助大家认识OAuth2.0,闲话少说,我根据框架中OAuth2.0的使用总结,画了一个简单的流程图(根据用户名+密码实现OAuth2.0的 ...

  10. HMM与分词、词性标注、命名实体识别

    http://www.hankcs.com/nlp/hmm-and-segmentation-tagging-named-entity-recognition.html HMM(隐马尔可夫模型)是用来 ...