javascript - Vue 自定义过滤器在全局定义时不起作用

标签 javascript vue.js

这是 jsFiddle 示例:

html:

<div id="demo">
  does not show $ sign in input as in second input - why? <br>
  <!-- the diff is only that filter is defined diferently -->    
  <input type="text" v-model="a | currencyDisplay">
  <span >model value: {{a }}</span>
</div>

Js:

Vue.filter('currencyDisplay', {
  currencyDisplay: {
    // model -> view
    // formats the value when updating the input element.
    read: function(val) {
      console.log('filter red');
      return '$'+val.toFixed(2)
    },
    // view -> model
    // formats the value when updating the data.
    write: function(val, oldVal) {
      console.log('filter write');

      var number = +val.replace(/[^\d.]/g, '')
      return isNaN(number) ? 0 : number
    }
  }
})

var demo = new Vue({
  el: '#demo',
  data: {
    a: 5
  }
})

当我查看文档示例的源代码时,他们放置了如下有效的代码:

new Vue({
  el: '#two-way-filter-demo',
  data: {
    money: 123.45
  },
  filters: {
    currencyDisplay: {
      read: function(val) {
        return '$'+val.toFixed(2)
      },
      write: function(val, oldVal) {
        var number = +val.replace(/[^\d.]/g, '')
        return isNaN(number) ? 0 : number
      }
    }
  }
})

所以区别在于过滤器的定义方式。但根据文档,它必须是双向的。这里出了什么问题?

http://jsfiddle.net/yMv7y/975/

最佳答案

您应该从全局过滤器中删除 currencyDisplay 键:

Vue.filter('currencyDisplay', {
  read: function (val) {
    return '$' + val.toFixed(2)
  },
  write: function (val, oldVal) {
    var number = +val.replace(/[^\d.]/g, '')
    return isNaN(number) ? 0 : number
  }
})

关于javascript - Vue 自定义过滤器在全局定义时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32868713/

相关文章:

javascript - 如何用三个js渲染像素化纹理?

javascript - Laravel 使用 Ajax 以一种形式更新数据和文件?当方法/类型为='PUT'时

javascript - 使用 splice 从数组中删除项目

vue.js - vuejs [v-cloak] css 规则将我的内容隐藏在 sailsjs 中

javascript - 如何在 Vue.js 中停止自动滚动到顶部

vue.js - 如何通过 setup() 发出多个参数?

javascript - 无法卸载 React 组件,从父组件返回 false

javascript - 如何从 href 链接替换哈希 anchor (octothorpe)

javascript - 在其外部单击时关闭工具提示

javascript - 动态 svg xlink :href not rending the icons in browser