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 相关文章推荐
如何用javascript判断录入的日期是否合法
Jan 08 Javascript
IE6下通过a标签点击切换图片的问题
Nov 14 Javascript
js下通过prototype扩展实现indexOf的代码
Dec 08 Javascript
比较新旧两个数组值得增加和删除的JS代码
Oct 30 Javascript
原生js和jquery中有关透明度设置的相关问题
Jan 08 Javascript
js确认删除对话框效果的示例代码
Feb 20 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
Jun 30 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
Mar 09 Javascript
JavaScript常用代码书写规范的超全面总结
Sep 11 Javascript
前端主流框架vue学习笔记第一篇
Jul 26 Javascript
layui的table单击行勾选checkbox功能方法
Aug 14 Javascript
详解Vue依赖收集引发的问题
Apr 22 Javascript
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小偷相关截取函数备忘
2010/11/28 PHP
微信access_token的获取开发示例
2015/04/16 PHP
win7系统配置php+Apache+mysql环境的方法
2015/08/21 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
javascript学习网址备忘
2007/05/29 Javascript
javascript中对变量类型的判断方法
2015/08/09 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
详解JavaScript函数对象
2015/11/15 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
工作中常用js功能汇总
2020/11/07 Javascript
在vue中使用eslint,配合vscode的操作
2020/11/09 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
python遍历数组的方法小结
2015/04/30 Python
Python中的下划线详解
2015/06/24 Python
Django 2.0版本的新特性抢先看!
2018/01/05 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
python对于requests的封装方法详解
2019/01/03 Python
django-filter和普通查询的例子
2019/08/12 Python
Python更换pip源方法过程解析
2020/05/19 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
2020/07/31 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
Mio Skincare中文官网:肌肤和身体护理
2016/10/26 全球购物
英国殿堂级有机护肤品牌:Rodial
2017/04/17 全球购物
HearthSong官网:儿童户外玩具、儿童益智玩具
2017/10/16 全球购物
县优秀教师事迹材料
2014/01/31 职场文书
2014乡镇“三八”国际劳动妇女节活动总结
2014/03/01 职场文书
小学清明节活动方案
2014/03/08 职场文书
行为习惯主题班会
2015/08/14 职场文书
Python字典和列表性能之间的比较
2021/06/07 Python
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技