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 相关文章推荐
收藏一些不常用,但是有用的代码
Mar 12 Javascript
Prototype Hash对象 学习
Jul 19 Javascript
jQuery简单实现禁用右键菜单
Mar 10 Javascript
JavaScript将数字转换成大写中文的方法
Mar 23 Javascript
JS动态修改图片的URL(src)的方法
Apr 01 Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
Apr 13 Javascript
限制复选框最多选择项的实现代码
May 30 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
Aug 15 Javascript
解决微信二次分享不显示摘要和图片的问题
Aug 18 Javascript
jQuery实现标签子元素的添加和赋值方法
Feb 24 jQuery
vue cli3 调用百度翻译API翻译页面的实现示例
Sep 13 Javascript
vue项目配置sass及引入外部scss文件
Apr 14 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中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
PHP重载基础知识回顾
2020/09/10 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
JS控件的生命周期介绍
2012/10/22 Javascript
Redis基本知识、安装、部署、配置笔记
2015/03/05 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
jquery实现简单实用的弹出层效果代码
2015/10/15 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
xmlplus组件设计系列之下拉刷新(PullRefresh)(6)
2017/05/03 Javascript
JS实现简单拖拽效果
2017/06/21 Javascript
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
2017/07/24 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
浅析js实现网页截图的两种方式
2019/11/01 Javascript
Python 文件读写操作实例详解
2014/03/12 Python
python使用Image处理图片常用技巧分析
2015/06/01 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
pytorch1.0中torch.nn.Conv2d用法详解
2020/01/10 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
2020/02/27 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
2020/09/17 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
《梅花魂》教学反思
2014/04/30 职场文书
社区平安建设方案
2014/05/25 职场文书
上课玩手机的检讨书
2014/10/01 职场文书
2015年乡镇民政工作总结
2015/05/13 职场文书
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python