2

我正在使用带有 Element 的 Vue.js 2,我想使用 Cleave.js 进行屏蔽。

我了解如何使用数据和计算属性在 Vue 中制作基本的掩码器。但是,我不想重做 Cleave 中所做的所有出色工作。

我还发现了 vue-cleave。这似乎是在 Vue 中使用 Cleave 的好方法。尽管 vue-cleave 将广告作为input页面的标准元素。我正在使用 Element,所以我需要一种使用el-input.

这是大多数 Vue 掩码器的常见问题,它们似乎向input页面添加了标准元素。

所以,我的问题是:Vue 在使用 Element 时集成 Cleave.js 的方式是什么?

参考:

元素:http ://element.eleme.io

Cleave.js:https ://github.com/nosir/cleave.js

Vue-Cleave:https ://github.com/vue-bulma/cleave

4

1 回答 1

2

我发现这篇文章: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>

应用程序.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>
于 2017-08-18T10:13:34.087 回答