zoukankan      html  css  js  c++  java
  • el-table表格组件内数字加千分位逗号

    父组件:

    el-table组件内:

    <template>
      <el-table class="em_table" :data="tableData" stripe :border="true" :size="size">
        <el-table-column v-for=" (column,index) in columns " :key="index" :prop="column.prop " :label="column.label ">
          <template slot-scope="scope">
            <span v-if="column.label !== 'Area'">{{formatCurrency(scope.row[column.prop])}}</span>
            <span v-else>{{scope.row[column.prop]}}</span>
          </template>
        </el-table-column>
      </el-table>
    </template>
    // 逗号分隔数组
        formatCurrency (num) {
          if (num) {
            // 将num中的$,去掉,将num变成一个纯粹的数据格式字符串
            num = num.toString().replace(/$|\,/g, '')
            // 如果num不是数字,则将num置0,并返回
            if (num === '' || isNaN(num)) {
              return 'Not a Number ! '
            }
            // 如果num是负数,则获取她的符号
            var sign = ''
            if (num.indexOf('-') !== -1) {
              sign = '-'
              num = num.substr(1)
            }
            // 如果存在小数点,则获取数字的小数部分
            var cents = num.indexOf('.') > 0 ? num.substr(num.indexOf('.')) : ''
            cents = cents.length > 1 ? cents : '' // 注意:这里如果是使用change方法不断的调用,小数是输入不了的
            // 获取数字的整数数部分
            num = num.indexOf('.') > 0 ? num.substring(0, (num.indexOf('.'))) : num
            // 如果没有小数点,整数部分不能以0开头
            if (cents === '') {
              if (num.length > 1 && num.substr(0, 1) === '0') {
                return 'Not a Number ! '
              }
            } else {
              if (num.length > 1 && num.substr(0, 1) === '0') {
                return 'Not a Number ! '
              }
            }
            // 针对整数部分进行格式化处理,这是此方法的核心,也是稍难理解的一个地方,逆向的来思考或者采用简单的事例来实现就容易多了
            /*
              也可以这样想象,现在有一串数字字符串在你面前,如果让你给他家千分位的逗号的话,你是怎么来思考和操作的?
              字符串长度为0/1/2/3时都不用添加
              字符串长度大于3的时候,从右往左数,有三位字符就加一个逗号,然后继续往前数,直到不到往前数少于三位字符为止
             */
            for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
              num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3))
            }
            // 将数据(符号、整数部分、小数部分)整体组合返回
            return sign + num + cents
          }
        }
  • 相关阅读:
    实现继承的几种方式
    使用 + 操作符、parseInt 、 parseFloat等方法处理数字字符串时的不同
    jQuery插件版无缝轮播,重写了之前的代码,显得更高大上一点
    我是如何从零开始构建一个jsp项目的
    css居中方法详解
    嫌innerHTML性能不够好,推荐几个新方法
    初学事件委托
    Set集合——HashSet、TreeSet、LinkedHashSet(2015年07月06日)
    十大Intellij IDEA快捷键(转)(2015年06月15日)
    IntelliJ IDEA 集成Tomcat后找不到HttpServlet问题(2015年06月13日)
  • 原文地址:https://www.cnblogs.com/listen9436/p/12012880.html
Copyright © 2011-2022 走看看