为了账号安全,请及时绑定邮箱和手机立即绑定

vue的v-show和@click的一个问题

vue的v-show和@click的一个问题

慕田峪9158850 2019-03-22 19:14:37
组件中的一个模板如图初始ifShow为false 所以class='property' 的 ul 不显示通过focus事件触发改变ifShow的值为true使class='property' 的 ul 显示问题通过focus事件触发显示的ul click事件无效..而如果在ifShow为false的情况下 手动更改此时ul 的display属性为block时, ul显示出来并且click事件有效    template: `    <div class='outside'>        <ul class='input'>            <li>                <ul class='box'>                    <li>                        <div style='display:inline-block;overflow:hidden' v-if='tagsLength > 0'>                            <span class='tag' v-for='(tag, index) in tags'>{{ tag.name }} <a href='#' @click='delTag(index)'>x</a></span>                        </div>                        <input :value='value' @input='$emit("input", $event.target.value)' @keyup.enter='onEnter' class='content' @focus='onFocus' @blur='onBlur'>                    </li>                    <li style='position:absolute;background:#fff;z-index:999'>                        <ul class='property' v-show='ifShow'>                            <li>{{ propertyHint }}</li>                            <li v-for='property in properties' @click='onClick(property)' :data-id='property.id'>{{ property.name }}</li>                        </ul>                    </li>                </ul>            </li>        </ul>        <div class='help-tips'>            <p>{{ inputHint }}</p>        </div>    </div>`
查看完整描述

2 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

点击ul中的li时:


在ul的click事件触发之前,li的blur事件先被触发了,所以ul的click事件不会触发。

解决办法:


1. 给blur事件添加延时。

2. 在click事件中修改isShow的值为false。


查看完整回答
反对 回复 2019-04-09
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

你可以使用v-if试一试


查看完整回答
反对 回复 2019-04-09
  • 2 回答
  • 0 关注
  • 2704 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信