为了账号安全,请及时绑定邮箱和手机立即绑定

js中方法参数传值的问题

js中方法参数传值的问题

慕仙森 2019-03-14 14:15:57
此问题出现在我阅读别人的源码时,对于此处传值有些不解,不知道是不是vue的一个特性,问题如下:在全局注册了一个方法export function parseTime(time, cFormat) {  console.log(time)  if (arguments.length === 0) {    return null  }  if ((time + '').length === 10) {    time = +time * 1000  }  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'  let date  if (typeof time === 'object') {    date = time  } else {    date = new Date(parseInt(time))  }  const formatObj = {    y: date.getFullYear(),    m: date.getMonth() + 1,    d: date.getDate(),    h: date.getHours(),    i: date.getMinutes(),    s: date.getSeconds(),    a: date.getDay()  }  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {    let value = formatObj[key]    if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1]    if (result.length > 0 && value < 10) {      value = '0' + value    }    return value || 0  })  return time_str}这时候在组件内进行这样的调用,直接传递了我认为是该方法的第二个参数--时间格式,那么time参数是怎么传递的呢?调用如下:  <el-table-column width="180px" align="center" label="Date">    <template slot-scope="scope">      <span>{{scope.row.timestamp | parseTime('{y}-{m}-{d} {h}:{i}')}}</span>    </template>  </el-table-column>主要是不明白为什么没有传递parseTime()方法的time参数直接传递了cFormat参数,是什么原理呢?
查看完整描述

1 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

{{scope.row.timestamp | parseTime('{y}-{m}-{d} {h}:{i}')}}

这里使用了vue的过滤器, parseTime的第一个参数为scope.row.timestamp。


例如


{{ message | filterA('arg1', arg2) }}

这里,filterA 被定义为接收三个参数的过滤器函数。其中 message 的值作为第一个参数,普通字符串 'arg1' 作为第二个参数,表达式 arg2 取值后的值作为第三个参数。

传送门->过滤器


查看完整回答
反对 回复 2019-03-20
  • 1 回答
  • 0 关注
  • 537 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信