从字符串开始过滤

时间:2016-04-12 11:23:02

标签: vue.js

目前,filterBy过滤器在整个字符串中查找匹配值。例如,如果我按" e"过滤,过滤结果可能需要: 的"娱乐&#34 ;, "因特网&#34 ;, "服务"

有没有办法让我指示filterBy从字符串的开头开始匹配并忽略其余部分,以便从该集合返回的唯一结果是"娱乐"?

1 个答案:

答案 0 :(得分:3)

您可以自己编写Filter并查看indexOf您正在搜索的字段。

我们说你有

<div id="app">
  <input v-model="search">
  <div v-for="item in items | startsWith search 'name'">
    {{ item.name }}
  </div>
</div>

然后你的过滤器看起来像这样:

Vue.filter('startsWith', function (array, search, field) {
  if (!search.length) return array;

  return array.filter(function(element) {
    return element[field].toLowerCase().indexOf(search.toLowerCase()) === 0;
  })
})

这是一个快速演示:https://jsfiddle.net/jb22wp1b/