【问题标题】:Vue Global Filter throws error of value undefinedVue全局过滤器抛出未定义值的错误
【发布时间】:2019-02-14 04:21:45
【问题描述】:

我正在尝试格式化货币。为此,我使用这样的全局过滤器:

Vue.filter('formatMoney', (val) => {
  if (!value) return ''
  val = val.toString()
  return val.replace(/\B(?=(\d{3})+(?!\d))/g, ",")
})

new Vue({
  el: '#app',
  data: {
    price: 1000
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>
<div id="app">
  <p>{{ price | formatMoney }}</p>
</div>

但是,我收到此错误,称为 value undefined!但令人惊讶的是,它适用于本地过滤器:

new Vue({
  el: '#app',
  data: {
    price: 1000
  },
  filters: {
    formatMoney(val) {
      return val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",")
    }
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>
<div id="app">
  <p>{{ price | formatMoney }}</p>
</div>

如何使这个全局过滤器起作用?

JSFiddle:http://jsfiddle.net/ahutL91m/4/

【问题讨论】:

    标签: javascript html vue.js filter


    【解决方案1】:

    您在全局过滤器中使用了错误的参数名称 (value)。
    应该是val:

    Vue.filter('formatMoney', (val) => {
      if (!val) return ''; // <--- value -> val
      val = val.toString()
      return val.replace(/\B(?=(\d{3})+(?!\d))/g, ",")
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-15
      • 2014-12-17
      • 1970-01-01
      • 2015-08-18
      • 2014-07-09
      • 2013-07-03
      • 1970-01-01
      相关资源
      最近更新 更多