日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

element input輸入框千分位無法回顯問題解決方法

作者:布偶亂跑 更新時間: 2022-04-10 編程語言

在后臺管理的項目中,輸入部分數量是需要千分位分割,但是遇到了父組件調用子組件無法回顯的問題,父子組件不能雙向綁定的問題,在使用計算屬性之后解決,方法如下:

  • 父組件
 <el-form-item label="最小庫存StockMinSS:"
               prop="minSS">
		  <Custom-Input ref="ipt"
		   				:value.sync="editForm.minSS"
		                :switchDayToWeek='switchDayToWeek' />
</el-form-item>
  • 子組件
<template>
  <el-input v-model="defaultValue"
            @input="changeInput"
            v-bind="options">
    <template slot="append">{{ switchDayToWeek }}</template>
  </el-input>
</template>
<script>
export default {
  name: 'CustomInput',
  props: {
    value: String,
    options: Object,
    switchDayToWeek: String
  },
  data() {
    return {
      // defaultValue: '0'
    }
  },
  mounted() {
    // this.defaultValue = this.value ? this.transferToDecimal(this.value) : '0'
  },
  computed: {
  // 計算屬性賦值
    defaultValue: {
      get: function () {
        return this.transferToDecimal(this.value)
      },
      // setter
      set: function (newValue) {
        console.log('newValue===', newValue)
      }
    }
  },
  methods: {
    transferToDecimal(num) {
      if (!num) return
      let [sInt, sFloat] = num.split('.')
      // 注意 “$&,”的應用
      sInt = sInt.replace(/\d(?=(\d{3})+$)/g, '$&,')
      // 區分整數與浮點小數
      return sFloat ? `${sInt}.${sFloat}` : `${sInt}`
    },
    changeInput(value) {
      // 此處允許用戶輸入點 “.”, 同時如果再次輸入點將會被截掉
      if (value.charAt(value.length - 1) == '.') {
        if (value.charAt(value.length - 2) == '.') {
          this.defaultValue = value.substr(0, value.length - 1)
        }
        return
      }
      // 此處防止用戶輸入特殊字符,具體查看下面正則
      value = this.cleanInput(value)
      this.defaultValue = this.transferToDecimal(value)

      // 此處激活.sync默認行為實現props的雙向綁定, 注意'update'
      this.$emit('update:value', value)
    },
    cleanInput(value) {
      // 正則表達式只匹配 首位負數, 數字, 以及第一個“.”號(如有多個只匹配一個),提取為數值默認順序連接,然后通過轉換函數轉換為千分位
      return value.match(/(^-\d+|\d+|\.{1})/g, '').join('')
    }
  }
}
</script>

原文鏈接:https://blog.csdn.net/weixin_44634372/article/details/115794112

欄目分類
最近更新