鍍金池/ 問答/HTML/ vue的v-show和@click的一個(gè)問題

vue的v-show和@click的一個(gè)問題

組件中的一個(gè)模板如圖
初始ifShowfalse 所以class='property'ul 不顯示
通過focus事件觸發(fā)改變ifShow的值為true使class='property'ul 顯示

問題

通過focus事件觸發(fā)顯示的ul click事件無效..
而如果在ifShow為false的情況下 手動(dòng)更改此時(shí)uldisplay屬性為block時(shí), 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>
`
回答
編輯回答
單眼皮

你可以使用v-if試一試

2017年3月10日 10:31
編輯回答
挽歌

點(diǎn)擊ul中的li時(shí):

在ul的click事件觸發(fā)之前,li的blur事件先被觸發(fā)了,所以u(píng)l的click事件不會(huì)觸發(fā)。

解決辦法:

1. 給blur事件添加延時(shí)。
2. 在click事件中修改isShow的值為false。
2017年10月8日 03:26