在自定义事件上启用angular-ui工具提示
我试图使用angular-ui的工具提示function来显示我的用户一个特定的字段是无效的,但似乎工具提示只能显示在一些预定义的触发器。 有什么办法可以触发工具提示,除了这些触发器?
例如:
<input type="text" tooltip="Invalid name!" tooltip-position="right" tooltip-trigger="myForm.username.$invalid">
这是一个窍门。
Twitter Bootstrap工具提示 (Angular-UI依赖于)有一个选项,用data-trigger="mouseenter"
的附加属性指定触发事件。 这给你一个更改触发器的方式(使用Angular):
<input ng-model="user.username" name="username" tooltip="Some text" tooltip-trigger="{{{true: 'mouseenter', false: 'never'}[myForm.username.$invalid]}}" />
所以当username
是$无效时, tooltip-trigger
expression式将会被计算为'mouseenter'
,工具提示会显示出来。 否则,触发器将评估为'never'
,作为回报将不会触发工具提示。
编辑:
@comten(在评论中)提到了一个场景,工具提示卡住了,即使模型有效也不会消失。 发生这种情况时,鼠标留在input字段input文本(和模型变得有效)。 只要模型validation评估为真, tooltip-trigger
将切换到“从不”。
UI引导使用一个所谓的triggerMap
来确定显示/隐藏工具提示的鼠标事件。
// Default hide triggers for each show trigger var triggerMap = { 'mouseenter': 'mouseleave', 'click': 'click', 'focus': 'blur' };
正如你所看到的,这张地图对“永不”事件一无所知,所以无法确定何时closures工具提示。 所以,为了使特技播放更好,我们只需要用我们自己的事件对来更新这张地图,然后UI Bootstrap就会知道在工具tooltip-trigger
设置为“never”时closures工具tooltip-trigger
。
app.config(['$tooltipProvider', function($tooltipProvider){ $tooltipProvider.setTriggers({ 'mouseenter': 'mouseleave', 'click': 'click', 'focus': 'blur', 'never': 'mouseleave' // <- This ensures the tooltip will go away on mouseleave }); }]);
PLUNKER
注意:$ tooltip provider由“ui.bootstrap.tooltip”模块公开,它允许我们在appconfiguration中全局configuration我们的工具提示。
我尝试了不同的东西
tooltip="{{(myForm.input1id.$invalid) ? 'You have an error with this field' : ''}}"
这样,我的工具提示只有input无效时写入的东西,如果没有写入任何东西,工具提示不显示。
从版本0.12.0开始, tooltip-tigger
不再是可观察的(所以你不能以编程方式改变它)。
您可以使用tooltip-enable
来获得相同的行为。 在这里查看更多细节: https : //github.com/angular-ui/bootstrap/issues/3372
您也可以在您的字段中添加tooltip-enable
而不是tooltip-trigger
。
<input type="text" tooltip="Invalid name!" tooltip-position="right" tooltip-enable="{{myForm.username.$invalid}}">
在这种情况下,如果用户名无效($无效返回true
),将出现工具提示。
根据新版本的文件,我会build议使用下面的HTML。 stewie的答案是没有帮助的最新版本。
<input class="form-control" name="name" type="text" required ng-model="name" uib-tooltip="name required" tooltip-is-open="formname.name.$invalid" tooltip-trigger="none" tooltip-placement="auto top" />
在tooltip-is-open="formname.name.$invalid"
replace您的表单名称
你已准备好出发。