zoukankan      html  css  js  c++  java
  • 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");
                });
            }
        }
    });
    

    原来指令是这样使用的。

  • 相关阅读:
    YOLOv5实现自定义对象训练与OpenVINO部署全解析
    GMS程序调试指南GMS-Feature-Matcher
    MobileNet V3与Lite R-ASPP 总结
    codevs 3385 拯救Oier(一) Save Oier—first
    喵哈哈村的魔法考试 Round #6 (Div.3) 题解
    POJ 1852 Ants
    加强赛第一轮题解
    喵哈哈村的魔法考试 Round #3 (Div.2)
    python小数据池,代码块的最详细、深入剖析
    比较三个数的大小
  • 原文地址:https://www.cnblogs.com/fsong/p/5983129.html
Copyright © 2011-2022 走看看