国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

AngularJS中run方法的巧妙運用

2019-11-19 18:08:21
字體:
來源:轉載
供稿:網友

前言

AngularJS是google在維護,其在國外已經十分火熱,可是國內的使用情況卻有不小的差距,參考文獻/網絡文章也很匱乏。網上關于AngularJS中run方法的介紹也比較少,本文就主要總結了關于AngularJS中run方法的巧妙運用,感興趣的朋友們可以一起來學習學習。

一、瀏覽器判斷

在angular做微信應用的時候,有時候我們也想把相同一份代碼運行在非微信的瀏覽器上,這時候我們可以在angular的run上寫點東西實現~

例如asw.run函數里執行定義一個$rootScope.isWeiXinLogin的函數

.run(['$rootScope', '$route', '$window', '$location', 'Position', '$cookies', 'Request', '$cookieStore',  function($rootScope, $route, $window, $location, position, $cookies, request, $cookieStore) {   //非微信的登陸   $rootScope.isWeiXinLogin = function() {    //判斷是否微信登陸    var ua = window.navigator.userAgent.toLowerCase();    //console.log(ua); //mozilla/5.0 (iphone; cpu iphone os 9_1 like mac os x) applewebkit/601.1.46 (khtml, like gecko) version/9.0 mobile/13b143 safari/601.1    if (ua.match(/MicroMessenger/i) == 'micromessenger') {     console.log(" 是來自微信內置瀏覽器");     return true;    } else {     console.log("不是來自微信內置瀏覽器");     return false;    }   };]);

這樣它能在應用的其他部分之前提前被執行,然后根據$rootScope.isWeiXinLogin的返回我們可以在不同的視圖或者控制器有效的進行判斷是否為微信瀏覽器

angular.module('autumnswind').controller('OrderCtrl', ['$rootScope', '$scope', 'Request', '$cookies', '$window', '$routeParams', '$location', 'Tool', function($rootScope, $scope, request, $cookies, $window, $routeParams, $location, tool) { if ($rootScope.isWeiXinLogin()) {     ...    }   }]);

二、登陸判斷

在run里面寫登陸判斷是一種不錯的方案,例如下面我寫的這段,配合cookie和我上面的瀏覽器判斷,當我加載頁面的時候我就可以調用$rootScope.goLogin方案來判斷是否這個路由所在的視圖為登陸,如果有這個合法cookie就讓它繼續運行,不然則返回login頁面進行登陸~

$rootScope.goLogin = function(replace) {    if ($rootScope.isWeiXinLogin()) {     if (!replace) {      $cookieStore.remove('loginBack');      delete $cookies.loginBack;      $location.path('login');     } else {      $cookies.loginBack = $location.path();      $location.path('login').replace();     }    } else {     $cookieStore.remove('loginBack');     delete $cookies.loginBack;     $location.path('loginWebapp');    }   };

三、白名單設置

曾經寫過一個這樣的函數來實現路由的參數判斷,來設置白名單,那時候這個函數還放在全局變量里面~其實回頭想想算是不大好的方法

var getParam = function(name) { var search = document.location.search; var pattern = new RegExp("[?&]" + name + "/=([^&]+)", "g"); var matcher = pattern.exec(search); var items = null; if (null != matcher) {  try {   items = decodeURIComponent(decodeURIComponent(matcher[1]));  } catch (e) {   try {    items = decodeURIComponent(matcher[1]);   } catch (e) {    items = matcher[1];   }  } } return items;};//這個是根據路由name來決定進入那個partswindow.cats = getParam('AutumnsWind');

后來改進了下面這個簡單的例子,就可以不用用上面那句代碼來實現了

$rootScope.$on('$routeChangeSuccess',     function() {      var route = window.location.href;      if (route.indexOf('/hello/') != -1 && route.indexOf('/autumnswind/') != -1) {       window.AutumnsWindShareUrl = window.location.href;      } else if (route.indexOf('#/index') != -1) {       window.AutumnsWindShareUrl = window.location.href;      } else if (route.indexOf('#/asw'scat/') != -1) {       window.AutumnsWindShareUrl = window.location.href;      } else {       //跳轉下載頁面       window.AutumnsWindShareUrl = '~autumns~.cn';      });

上面我們根據路由發生的變化進行白名單的設置,復雜點的話可以運用一下正則,這樣就能很好的過濾我們禁止的url,由于例子就不寫這么復雜啦~

四、設置公共參數

這個其實就不用寫例子了,因為上面的例子也算是這個的一部分吧~

總結

以上就是關于Angular中run方法巧妙運用的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武威市| 开化县| 临武县| 荃湾区| 白山市| 德江县| 北川| 靖远县| 伊宁市| 呼图壁县| 广东省| 叙永县| 册亨县| 清新县| 柳州市| 分宜县| 柳河县| 五华县| 开封县| 阜南县| 贵溪市| 三原县| 闵行区| 广东省| 清丰县| 敦煌市| 石狮市| 玉林市| 上林县| 安化县| 安陆市| 红原县| 饶平县| 宜春市| 扎鲁特旗| 开鲁县| 阜新市| 子洲县| 安达市| 惠州市| 金沙县|