全网整合营销服务商

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

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

深究AngularJS如何获取input的焦点(自定义指令)

1. 写在前面

关于如何获取input框、textarea等的焦点,网上有许多文章都只是会跟你说ng-focus这个内置指令。像这种解答,只能说明作者并为真正理解人家的需求。ng-focus是一个事件,跟原生JS(JavaScript)的onfocus是一样的,当我们点击input框时,就会触发该事件,而在该事件里我们可以调用一个函数。所以,当人家问你如何获取焦点时一般的意思是,如果我进行了某些操作后,不用鼠标点击是如何自动获取焦点,问题的关键是“自动”。

因为AngularJS没有像原生JS那样可通document.getElementById("idVlaue")直接获取元素的功能,所以只能通过自定义指令的方式实现,所以需要实现这个,我们还得有angularjs自定义指令的基础。可参考:https://www./article/115979.htm

2. 代码示例

各位看官,芭蕉即焦点,如有戳中你的笑点,概不负责。温馨提示:下面代可直接拿去编辑器运行看效果哦,哎,没办法,就是这么负责。

<!-- 传说芭蕉扇乃铁扇公主唾液所化,因此可重复取 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script>
</head>
<body>

 <div ng-app="myApp" ng-controller="control">
  <input type="text" set-Focus ng-blur="setBlur()">
  <button ng-click="getFocus()">孙爷爷我要去取芭蕉扇了</button>
 </div> 

<script type="text/javascript">  
 //模型
 var app = angular.module('myApp',[]);

 //控制器
 app.controller("control",function($scope){
  $scope.isCome = false;  //判断大圣来了没
  $scope.isFocus = false;  //判断是不是要取芭蕉扇

  $scope.getFocus = function(){
   $scope.isFocus = true; //大圣来了
   $scope.isCome = true; //要取芭蕉扇
  };

  $scope.setBlur = function(){
   $scope.isFocus = false;//没人要来取芭蕉扇了
  }
 });

 //自定义指令
  app.directive('setFocus',[ function(){
   return {
    scope:false,
    link:function(scope, element){      
     scope.$watch("isFocus",function(newValue,oldValue, scope) {
      //大圣来了,且要取芭蕉扇
      if(newValue && scope.isCome){
       element[0].focus(); //获取焦点
       alert("猴哥,老牛不在家,我一介女子还不是你说什么我就照做,可你进入人家的身体也不打声招呼,进了就进了,还搞得我那么难受,求你别搞了,给,芭~~~蕉~~~扇!")
      }
    }, true);;
    }
   };
 }]);

</script>
</body> 
</html>

3. 代码说明

首先说明一下,我本后台Java工程师,因前端大牛搭了AngularJS后却辞职去了新浪,一下无人接手,我便自告奋勇接了活。为了啥?为了涨工资塞!

该文默认读者对angualrJS有一定的基础语法,此文的亮点在哪呢?亮点在于实现获取焦点的逻辑。angularjs文档只会告诉你用自定义指令获取焦点,如代码:

<body>
 <div ng-app="myApp" >
  <input type="text" set-Focus>
 </div>
 <script type="text/javascript">
   var app = angular.module('myApp',[]);
   app.directive('setFocus', function(){
     return function(scope, element){
      element[0].focus();
     };
   });
 </script>
</body> 

这块代码,除了能进入页面获取焦点,还能干啥?还能告诉初学者说,亲,自定义指令里面还可以直接return 一个function哟。

正式说说我是如何实现执行一些操作后实现获取焦点的:

首先自定义指令会用不必说了,可亲们是否还知道自定义里有一个属性叫scope啊?在我提供的链接的文章有说明它有两个值类型,boolean和对象,那里面的示例只说了值为对象的例子,但为boolean时没有说过。

既然我们需要在进行某个操作后再获取焦点,那么就需要我们能同时操作自定义指令与控制器里的变量,如第一例子里的isCome和isFocus。而在scope说明中这样写到:scope值为false(默认值): 使用父作用域作为自己的作用域。为true时: 新建一个作用域,该作用域继承父作用域。所以我们默认就可以直接在自定义指令里操作控制器里的变量。于是我就又用到了监听$watch,这是个什么鬼?后面会写个小文专门解释。只要监听到变化后的结果符合获取焦点的要求,我们就执行element[0].focus();来获取焦点。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# angularjs  # input  # 焦点  # 事件  # angularjs获取input  # Angularjs 事件指令详细整理  # AngularJS实现自定义指令与控制器数据交互的方法示例  # angularjs之$timeout指令详解  # Angularjs中使用轮播图指令swiper  # Angularjs中使用指令绑定点击事件的方法  # angularjs 指令实现自定义滚动条效果  # 自定义  # 大圣  # 来了  # 我就  # 说了  # 还能  # 你说  # 而在  # 进了  # 值为  # 自己的  # 是一个  # 我是  # 就会  # 我要  # 在我  # 器里  # 去了  # 还可以  # 如有 


相关文章: 济南网站建设制作公司,室内设计网站一般都有哪些功能?  湖北网站制作公司有哪些,湖北清能集团官网?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  高端网站建设与定制开发一站式解决方案 中企动力  如何在腾讯云服务器快速搭建个人网站?  营销式网站制作方案,销售哪个网站招聘效果最好?  建站之星代理如何获取技术支持?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  微信小程序 input输入框控件详解及实例(多种示例)  如何在云主机上快速搭建多站点网站?  网站制作大概多少钱一个,做一个平台网站大概多少钱?  如何在建站之星绑定自定义域名?  *服务器网站为何频现安全漏洞?  魔方云NAT建站如何实现端口转发?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  如何登录建站主机?访问步骤全解析  建站上传速度慢?如何优化加速网站加载效率?  如何快速重置建站主机并恢复默认配置?  建站之星如何开启自定义404页面避免用户流失?  制作证书网站有哪些,全国城建培训中心证书查询官网?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  如何在Tomcat中配置并部署网站项目?  网站制作的步骤包括,正确网址格式怎么写?  英语简历制作免费网站推荐,如何将简历翻译成英文?  手机网站制作与建设方案,手机网站如何建设?  如何选择香港主机高效搭建外贸独立站?  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  如何快速生成凡客建站的专业级图册?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  一键网站制作软件,义乌购一件代发流程?  如何用wdcp快速搭建高效网站?  如何通过多用户协作模板快速搭建高效企业网站?  如何在服务器上配置二级域名建站?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  小建面朝正北,A点实际方位是否存在偏差?  建设网站制作价格,怎样建立自己的公司网站?  婚礼视频制作网站,学习*后期制作的网站有哪些?  如何快速上传建站程序避免常见错误?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  制作销售网站教学视频,销售网站有哪些?  盘锦网站制作公司,盘锦大洼有多少5G网站?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星如何通过成品分离优化网站效率?  ,如何利用word制作宣传手册?  建站主机与虚拟主机有何区别?如何选择最优方案? 

您的项目需求

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