如何在 Vue 中将 cleave.js 与元素结合使用?
How can I combine cleave.js with element in Vue?
我正在将 Vue.js 2 与 Element 一起使用,我想使用 Cleave.js 进行屏蔽。
我了解如何使用数据和计算属性在 Vue 中制作基本屏蔽器。然而,我不想重做在 Cleave 中完成的所有优秀工作。
我还发现了 vue-cleave。这似乎是将 Cleave 与 Vue 一起使用的好方法。尽管 vue-cleave 向页面广告了一个标准的 input
元素。我正在使用 Element,所以我需要一种使用 el-input
的方法。
这是大多数 Vue 屏蔽器的常见问题,他们似乎向页面添加了标准的 input
元素。
所以,我的问题是:Vue 在使用 Element 时集成 Cleave.js 的方式是什么?
参考文献:
Cleave.js: https://github.com/nosir/cleave.js
Vue-Cleave:https://github.com/vue-bulma/cleave
我找到这篇文章:https://vuejsdevelopers.com/2017/05/20/vue-js-safely-jquery-plugin/
其中解释了如何将 JQuery 与 Vue 一起使用。我遵循该模式并将 Vue 与 Cleave 集成如下:
SmartCleave.vue
<template>
<input />
</template>
<script>
/* eslint-disable no-new */
import Cleave from 'cleave.js'
export default {
mounted () {
new Cleave(this.$el, {
date: true,
datePattern: ['d', 'm', 'Y']
})
this.$el.oninput = (e) => {
console.log('oninput the field', e.target.value)
this.$emit('oninput', e.target.value)
}
}
}
</script>
App.vue
<template>
<div id="app">
<smart-cleave @oninput="logIt"></smart-cleave>
<div>{{date}}</div>
</div>
</template>
<script>
/* eslint-disable no-new */
import Cleave from 'cleave.js'
import SmartCleave from './components/SmartCleave'
new Cleave('#plain-input', {
date: true,
datePattern: ['d', 'm', 'Y']
})
export default {
name: 'app',
components: {
SmartCleave
},
data () {
return {
date: ''
}
},
methods: {
logIt (val) {
console.log('cahnged', val)
this.date = val
}
}
}
</script>
<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
/* text-align: center; */
color: #2c3e50;
margin-top: 60px;
}
</style>
我正在将 Vue.js 2 与 Element 一起使用,我想使用 Cleave.js 进行屏蔽。
我了解如何使用数据和计算属性在 Vue 中制作基本屏蔽器。然而,我不想重做在 Cleave 中完成的所有优秀工作。
我还发现了 vue-cleave。这似乎是将 Cleave 与 Vue 一起使用的好方法。尽管 vue-cleave 向页面广告了一个标准的 input
元素。我正在使用 Element,所以我需要一种使用 el-input
的方法。
这是大多数 Vue 屏蔽器的常见问题,他们似乎向页面添加了标准的 input
元素。
所以,我的问题是:Vue 在使用 Element 时集成 Cleave.js 的方式是什么?
参考文献:
Cleave.js: https://github.com/nosir/cleave.js
Vue-Cleave:https://github.com/vue-bulma/cleave
我找到这篇文章:https://vuejsdevelopers.com/2017/05/20/vue-js-safely-jquery-plugin/
其中解释了如何将 JQuery 与 Vue 一起使用。我遵循该模式并将 Vue 与 Cleave 集成如下:
SmartCleave.vue
<template>
<input />
</template>
<script>
/* eslint-disable no-new */
import Cleave from 'cleave.js'
export default {
mounted () {
new Cleave(this.$el, {
date: true,
datePattern: ['d', 'm', 'Y']
})
this.$el.oninput = (e) => {
console.log('oninput the field', e.target.value)
this.$emit('oninput', e.target.value)
}
}
}
</script>
App.vue
<template>
<div id="app">
<smart-cleave @oninput="logIt"></smart-cleave>
<div>{{date}}</div>
</div>
</template>
<script>
/* eslint-disable no-new */
import Cleave from 'cleave.js'
import SmartCleave from './components/SmartCleave'
new Cleave('#plain-input', {
date: true,
datePattern: ['d', 'm', 'Y']
})
export default {
name: 'app',
components: {
SmartCleave
},
data () {
return {
date: ''
}
},
methods: {
logIt (val) {
console.log('cahnged', val)
this.date = val
}
}
}
</script>
<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
/* text-align: center; */
color: #2c3e50;
margin-top: 60px;
}
</style>