美文网首页
vue-input更新(vue input file多次选择)

vue-input更新(vue input file多次选择)

作者: 反者道之动001 | 来源:发表于2018-08-02 20:21 被阅读111次

没事更一下 。。。

我以为重新生成还是比较稳妥得方法, 下面代码实现在兼容vue里面得class, 哈哈, 原生\jq等都可以使用, 只不过兼容了vue。

废话不多说, 放代码.

ReInput({target, ok, params, type}){
        letparam = [].slice.call(params)
            .filter((_, i) => i != 0)
        let parentNode = target.parentNode
        let dataVal = Object.keys(target.dataset)[0]
        let input = document.createElement('input')
        input.type = type || 'file'
        input.onchange = e => ok.apply(null, [e, ...param])
        input.dataset[dataVal] = ""
        input.setAttribute('class', target.getAttribute('class'))
        
        parentNode.removeChild(target)
        parentNode.appendChild(input)
    }

USE:

ReInput({ INPUTDOM, ok: FUNC, params: arguments, type })
*type是可选得
例子:

//VIEW: 
<input type="file" @change="(e) => func(e, index)" />

// JS:
func(e, index){
  // CODE
  Config.ReInput({ target: e.target, ok: this.func, params: arguments })
}

Tip:
如果节点有其他得特殊地方, 可以自己扩展。

在项目中发现一个问题, 如果vue比较复杂得话, 这个会出bug,(DOM节点问题, 比如你vue在input上面使用了v-if在变动, 这时候会找错了值) 我们换一下写法

ReInput({target}){
target.value = null
}

短小精悍!

--END---

相关文章

网友评论

      本文标题:vue-input更新(vue input file多次选择)

      本文链接:https://www.haomeiwen.com/subject/ubnsvftx.html