angularJS-通過provider實現全域變數的讀取和賦值

來源:互聯網
上載者:User
簡單全域變數的設定

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方法即可,無需增加新的方法。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.