Angularjs 1 中使用指令绑定点击事件

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

如html

<ul id="main-menu">
  <li class="">
    <a href="javascript:;">Menu1</a>
    <ul class="sub-menu">
       <li ><a href="javascript:;">--1</a></li>
        <li ><a href="javascript:;">--2</a></li>
    </ul>
  </li>
    <li class="">
    <a href="javascript:;">Menu2</a>
    <ul class="sub-menu">
        <li ><a href="javascript:;">--1</a></li>
        <li ><a href="javascript:;">--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:;" toggle-main-menu>Menu1</a>
    <ul class="sub-menu">
       <li ><a href="javascript:;">--1</a></li>
        <li ><a href="javascript:;">--2</a></li>
    </ul>
  </li>
    <li class="">
    <a href="javascript:;" toggle-main-menu>Menu2</a>
    <ul class="sub-menu">
        <li ><a href="javascript:;">--1</a></li>
        <li ><a href="javascript:;">--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");
            });
        }
    }
});

原来指令是这样使用的。

转载于:https://www.cnblogs.com/fsong/p/5983129.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值