全网整合营销服务商

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

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

AngularJS中run方法的巧妙运用

前言

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来决定进入那个parts
window.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方法巧妙运用的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


# angular  # run  # 方法  # angularjs  # run方法  # angularjs中的run方法  # angularJS中$apply()方法详解  # 使用AngularJS来实现HTML页面嵌套的方法  # angularjs 处理多个异步请求方法汇总  # 在AngularJS中使用AJAX的方法  # 使用AngularJS处理单选框和复选框的简单方法  # AngularJS中取消对HTML片段转义的方法例子  # Jquery和angularjs获取check框选中的值的方法汇总  # angularJS 中$scope方法使用指南  # 简介AngularJS中使用factory和service的方法  # AngularJS Module方法详解  # 判断是否  # 我们可以  # 我就  # 很好  # 是一种  # 放在  # 就能  # 和我  # 当我  # 感兴趣  # 这段  # 能在  # 朋友们  # 也很  # 那时候  # 跳转  # 让它  # 想把  # 却有  # 在国外 


相关文章: 建站之星后台管理系统如何操作?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  如何通过FTP服务器快速搭建网站?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  如何配置支付宝与微信支付功能?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  如何快速搭建支持数据库操作的智能建站平台?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何快速搭建响应式可视化网站?  西安专业网站制作公司有哪些,陕西省建行官方网站?  建站之星Pro快速搭建教程:模板选择与功能配置指南  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  如何访问已购建站主机并解决登录问题?  建站OpenVZ教程与优化策略:配置指南与性能提升  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  广州商城建站系统开发成本与周期如何控制?  广平建站公司哪家专业可靠?如何选择?  如何设置并定期更换建站之星安全管理员密码?  深圳网站制作的公司有哪些,dido官方网站?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  网站制作费用多少钱,一个网站的运营,需要哪些费用?  如何在云主机上快速搭建网站?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  建站之星客服服务时间及联系方式如何?  制作公司内部网站有哪些,内网如何建网站?  江苏网站制作公司有哪些,江苏书法考级官方网站?  c++怎么用jemalloc c++替换默认内存分配器【性能】  如何在阿里云服务器自主搭建网站?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  完全自定义免费建站平台:主题模板在线生成一站式服务  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  如何在阿里云ECS服务器部署织梦CMS网站?  Android自定义控件实现温度旋转按钮效果  建站主机选虚拟主机还是云服务器更好?  怀化网站制作公司,怀化新生儿上户网上办理流程?  如何通过网站建站时间优化SEO与用户体验?  营销式网站制作方案,销售哪个网站招聘效果最好?  公司网站制作价格怎么算,公司办个官网需要多少钱?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?  如何快速搭建虚拟主机网站?新手必看指南  如何通过主机屋免费建站教程十分钟搭建网站?  如何通过服务器快速搭建网站?完整步骤解析  5种Android数据存储方式汇总  建站之星后台密码遗忘?如何快速找回? 

您的项目需求

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