触发角度中另一个元素的单击事件?

时间:2013-08-20 12:10:27

标签: angularjs

我有一个输入框,它与datepicker绑定。在我看来,此输入框旁边还有一个小日历图标。我想在用户点击此日历图标时触发输入框的点击事件。我已经使用指令将其应用于日历图标。但它几乎像jQuery。那么有什么不同的方法来实现这一目标吗?如果我的方法有误,那么请引导我走向正确的方向。我是角色的新手,我读过一些我读过的文章,避免使用jQuery。感谢

My Directive

myApp.directive('openCal',function($compile,$filter) {
    return {
        link:function(scope,element,attrs) {
            element.bind("click",function() {
                element.siblings("input").trigger("click");
            });
        }
    };
});

工作正常。但我不确定这是否正确?

2 个答案:

答案 0 :(得分:0)

不,如果我理解你想要做的事情,那么你就会过度复杂化。

在你的情况下,看起来你会有类似的东西:

<img open-cal/>
<input ng-click="doSomething()">

点击img会触发点击输入,通过openCal指令。而是考虑做这样的事情:

<div ng-click="doSomething()">
  <img>
  <input>
</div>

如果doSomething()需要从输入中获取数据,请使用ng-model将输入中的数据绑定到范围。

虽然! 如果你需要做一个指令,这是正确的方法。使用element.bind不是问题,因为它包含在Angular中。你想要避免的是使用像$('。calendar')这样的东西。点击等等。

答案 1 :(得分:0)

解决此问题的另一种方法是为包含日历的输入字段添加<label>元素。然后单击日历将聚焦输入字段。然后,您只需要在输入字段上监听focus事件即可完成额外的工作。如果有人通过点击tab键通过键盘导航到您的输入字段,这会带来额外的好处。