AngularJS基于provider實現(xiàn)全局變量的讀取和賦值方法
本文實例講述了AngularJS基于provider實現(xiàn)全局變量的讀取和賦值方法。分享給大家供大家參考,具體如下:
簡單全局變量的設(shè)置
1,通過var 直接定義global variable,這根純js是一樣的。
2,用angularjs value來設(shè)置全局變量 。
3,用angularjs constant來設(shè)置全局變量 。
示例代碼如下:
在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中對全局變量進(jìn)行讀取
'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;設(shè)置后,無需在controller聲明的時候注入,直接使用即可。
value和contant,在app中初始化后,需要在controller聲明時候注入到controller中,才能夠使用。
這三種方式都存在一個問題,即只能夠讀取全局變量,無法對全局變量進(jìn)行修改賦值。在很對業(yè)務(wù)邏輯中無法滿足業(yè)務(wù)需求。
使用provider實現(xiàn)全局變量。
步驟與上面的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);//設(shè)置全局變量
}));
通過provider提供的get方法,實現(xiàn)參數(shù)的讀取和賦值。
注意事項
代碼中,我們對provider 的賦值操作進(jìn)行了取巧設(shè)計,當(dāng)?shù)谝粋€參數(shù)等于0的時候,默認(rèn)是讀取,當(dāng)?shù)谝粋€參數(shù)不為0的時候,實現(xiàn)的是設(shè)置后進(jìn)行讀取。這樣,公用一個get方法即可,無需增加新的方法。
更多關(guān)于AngularJS相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《AngularJS指令操作技巧總結(jié)》、《AngularJS入門與進(jìn)階教程》及《AngularJS MVC架構(gòu)總結(jié)》
希望本文所述對大家AngularJS程序設(shè)計有所幫助。
相關(guān)文章
AngularJS+bootstrap實現(xiàn)動態(tài)選擇商品功能示例
這篇文章主要介紹了AngularJS+bootstrap實現(xiàn)動態(tài)選擇商品功能,涉及AngularJS指令、事件響應(yīng)及頁面元素動態(tài)操作相關(guān)技巧,需要的朋友可以參考下2017-05-05
詳解Angular調(diào)試技巧之報錯404(not found)
本篇文章主要介紹了詳解Angular調(diào)試技巧之報錯404(not found),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
AngularJS實現(xiàn)的錨點樓層跳轉(zhuǎn)功能示例
這篇文章主要介紹了AngularJS實現(xiàn)的錨點樓層跳轉(zhuǎn)功能,涉及AngularJS事件響應(yīng)實現(xiàn)錨點跳轉(zhuǎn)功能的相關(guān)操作技巧,需要的朋友可以參考下2018-01-01
AngularJS Bootstrap詳細(xì)介紹及實例代碼
本文主要介紹AngularJS Bootstrap,這兩對AngularJS Bootstrap的基礎(chǔ)知識做了詳細(xì)講解,并提供簡單示例,有需要的小伙伴可以參考下2016-07-07

