Angularjs中使用指令绑定点击事件的方法


Posted in Javascript onMarch 30, 2017

项目中,模板中的菜单是jQuery控制的,在Angularjs中就运行不到了,因为菜单项是ng-repeat之后的。

如html

<ul id="main-menu">
 <li class="">
  <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Menu1</a>
  <ul class="sub-menu">
    <li ><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >--1</a></li>
    <li ><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >--2</a></li>
  </ul>
 </li>
  <li class="">
  <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Menu2</a>
  <ul class="sub-menu">
    <li ><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >--1</a></li>
    <li ><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >--2</a></li>
  </ul>
 </li>
</ul>

Jquery给第一级a链接绑定事件代码像:

$(function(){
 $("#main-menu li a").click(function(e){
   if ($(this).next().hasClass('sub-menu') === false) {
        return;
     }
     console.log("click");
 });
});

因为我之前看过文档说,Angularjs的Controller不处理Dom的操作,所以一直在找方法怎么处理和jQuery 一样绑定a的点击事件,在看了jQuery not working with ng-repeat results之后,原来可以将所有链接的单击事件,放在一个指令中。如果在Controller中绑定了ng-click,并操作了Dom元素,就不太规范了,使用指令会好一些。

html

<ul id="main-menu">
 <li class="">
  <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" toggle-main-menu>Menu1</a>
  <ul class="sub-menu">
    <li ><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >--1</a></li>
    <li ><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >--2</a></li>
  </ul>
 </li>
  <li class="">
  <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" toggle-main-menu>Menu2</a>
  <ul class="sub-menu">
    <li ><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >--1</a></li>
    <li ><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >--2</a></li>
  </ul>
 </li>
</ul>

javascript:

.directive("toggleMainMenu", function() {
  return {
    restrict: "A",
    link: function(scope, elem, attrs) {
      $(elem).click(function() {
        if($(this).next().hasClass('sub-menu') === false) {
          return;
        }
      console.log("click");
      });
    }
  }
});

原来指令是这样使用的。以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 自动增长的文本输入框实现代码
Apr 02 Javascript
JQUERY的属性选择符和自定义选择符使用方法(二)
Apr 07 Javascript
iframe 上下滚动条如何默认在下方实现原理
Dec 10 Javascript
window.open 以post方式传递参数示例代码
Feb 27 Javascript
JavaScript使用replace函数替换字符串的方法
Apr 06 Javascript
javascript巧用eval函数组装表单输入项为json对象的方法
Nov 25 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
Jul 21 Javascript
javascript中call()、apply()的区别
Mar 21 Javascript
解决Vue打包上线之后部分CSS不生效的问题
Nov 12 Javascript
node.js +mongdb实现登录功能
Jun 18 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
Sep 02 Javascript
vue使用echarts图表自适应的几种解决方案
Dec 04 Vue.js
Angualrjs和bootstrap相结合实现数据表格table
Mar 30 #Javascript
微信小程序中顶部导航栏的实现代码
Mar 30 #Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
Mar 30 #Javascript
vue分类筛选filter方法简单实例
Mar 30 #Javascript
教你快速搭建Node.Js服务器的方法教程
Mar 30 #Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
Mar 30 #Javascript
canvas绘制一个常用的emoji表情
Mar 30 #Javascript
You might like
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
ThinkPHP的URL重写问题
2014/06/22 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
php正则修正符用法实例详解
2016/12/29 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
html数组字符串拼接的最快方法
2009/09/16 Javascript
javascript 打开页面window.location和window.open的区别
2010/03/17 Javascript
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
关于JavaScript的with 语句的使用方法
2011/05/09 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
js实现省级联动(数据结构优化)
2020/07/17 Javascript
[28:07]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第二场 12.13
2020/12/17 DOTA
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
Numpy中的mask的使用
2018/07/21 Python
Django框架使用内置方法实现登录功能详解
2019/06/12 Python
Python基于requests实现模拟上传文件
2020/04/21 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
python绘制汉诺塔
2021/03/01 Python
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
DOM和JQuery对象有什么区别
2016/11/11 面试题
通信工程毕业生求职信
2013/11/16 职场文书
十佳班主任事迹材料
2014/01/18 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
计生个人工作总结
2015/02/28 职场文书
党校毕业个人总结
2015/02/28 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
政审证明材料
2015/06/19 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书
2016年教育局“我们的节日——端午节”主题活动总结
2016/04/01 职场文书
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android