您的位置:首页 > Web前端 > AngularJS

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

2016-10-20 23:57 537 查看
项目中,模板中的菜单是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");
});
}
}
});

原来指令是这样使用的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: