Angular-Material"md-datepicker"指令 - "md-open-on-focus"问题

Dot*_*Bot 5 angularjs angular-material

例如,在这个小提琴中,使用时打开md-datepicker多次似乎存在不一致问题md-open-on-focus.第一次打开和关闭它后会出现问题(这可以正常) - 之后它会在点击时随机打开并且会不稳定.

<md-datepicker ng-model="timeModel" md-hide-icons="all" md-open-on-focus></md-datepicker>
Run Code Online (Sandbox Code Playgroud)

有没有人经历过相同的行为并找到了解决方案?谢谢.

tan*_*may 2

md-hide-icons="all"目前,和一起使用的问题md-open-on-focus是,当您单击外部时,焦点仍然在 input 上。但是,由于没有可供单击的图标并且焦点已经位于输入上,因此我们无法打开日期选择器。

如果您单击外部,然后再次单击外部,输入的焦点就会消失,并且它将从此正常工作,这应该是预期的行为

但如果您不希望出现这种行为,我们可以采取一些措施来改变它!

现在,看看代码datePicker,在closeCalendarPane函数中,他们有

self.calendarPaneOpenedFrom.focus();
Run Code Online (Sandbox Code Playgroud)

它负责保持对输入的关注。如果我们删除它,那么在单击外部(或从选择器中选择日期)时它将失去焦点,这正是我们想要的。他们有一些代码处理输入openOnFocus,但不知道这有什么帮助!

Forked jsfiddle(更改行位于#31449)

此外,更改库代码也不是我们通常想要做的。因此,目前,您可以有一个解决方法,例如使用您最喜欢的方式( /或纯 JS )打开回调md-is-open并从回调内的输入元素中删除焦点[正如 @quirimmo 提到的]jQueryangular.element

希望有帮助!