我有一个输入框,它与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");
});
}
};
});
工作正常。但我不确定这是否正确?
答案 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
键通过键盘导航到您的输入字段,这会带来额外的好处。