Как передать аргумент фильтрам vuejs?

у меня есть следующий фильтр vuejs

import Vue from 'vue'

Vue.filter('truncate', function (value) {
   return value.substring(0, 10)
})

который я тогда называю

<p> {{filename | truncate}} </p>

но я хотел бы передать аргументы 0, 10 к фильтру на html. Есть ли способ сделать это?

3 ответов


попробуйте так передать дополнительное значение как param в VueJS filters

var app = new Vue({
    el: "#vue-instance",
    filters:{
      currency: function(value,arg1){
        return arg1+value;
      }
    },
    data: {
    },
    mounted() {
    }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.1/vue.js"></script>
<div id="vue-instance">
  {{123 | currency('$') }}
</div>

Docs говорит:фильтр-аргумент-синтаксис-изменен

в вашем примере

Vue.filter('truncate', function (value,start,end) {
   return value.substring(start, end)
})

var app = new Vue({
    el: "#vue-instance",
    data: {
    },
    mounted() {
    }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.1/vue.js"></script>
<div id="vue-instance">
  {{ 'this is niklesh.raut' | truncate(0,10) }}
</div>

по словам документация, фильтры являются функциями JavaScript, поэтому они могут принимать аргументы, поэтому вы должны быть в состоянии сделать:

<p> {{ filename | truncate(10) }} </p>

значение filename будет передано в первый аргумент. 10 будет передано в truncate в качестве второго аргумента


просто расширьте и вызовите свою конструкцию с параметрами:

Vue.filter('truncate', function (value, from, count) {
  return value.substring(from, count)
})

<p>{{filename | truncate(0, 10)}}</p>