【问题标题】:Vue - How to search filter specific part in data?Vue - 如何搜索过滤数据中的特定部分?
【发布时间】:2018-09-14 08:27:44
【问题描述】:

我正在用 firestore 制作一个小 Vue 应用程序。

我从日期时间选择器中选择数据并将这种格式的数据发送到数据库。

{{date}}:2018-09-15T00:00:00.000Z

这里是 09 显示月份。

我有一个这样的 v-for 循环:

<tbody v-for="item in filteredList">
    <tr>
    <td>{{item.date.slice(0,10)}}</td>
    </tr>
</tbody>

我在 Computed 属性中有这个过滤器:

computed: {
    filteredList() {
        return this.items.filter(item => { return item.date.toLowerCase().includes(this.search.toLowerCase()) })
   }
}

所以我想使用输入搜索或选择下拉菜单,这将根据月份过滤项目:

2018-09-15T00:00:00.000Z 。在这种情况下从 09 开始

我该怎么做?

【问题讨论】:

    标签: vue.js filter


    【解决方案1】:

    假设您有一个过滤器(文本、下拉菜单等)

    1. 绑定到数据成员filterText
    2. 有一个 2 位字符串值来表示月份。
    3. 使用空字符串表示“无过滤器”。

    你会这样做:

    computed: {
      filteredList() {
        return this.items.filter(item => {
          const field = parseInt(item.date.substring(5, 7)) // the month part of the date
    
          if (this.filterText === '') return true
          else return field === this.filterText
        })
      }
    }
    

    这是一个示例过滤器元素,绑定到filterText

    <select v-model='filterText'>
        <option v-for='n in 12' :value='pad2(n)'>{{n}}</option>
    </select>
    

    绑定到数据

      data: {
        filterText:'03'
      },
    

    还有一种填充方法

    methods: {
         pad2(number) {
      if (number<=99) { number = ("0"+number).slice(-2); }
      return number;
    }
    

    【讨论】:

    • 如果我用输入搜索我的 v-model 输入搜索将是 filterText ?
    • 例如,filterText 将绑定到您的选择框的值。 (“01”、“02”、“03”等)
    • @CihanZengin 我在答案中添加了一些想法。
    • 不起作用 :( 给出白屏不显示来自 v-for 循环的数据并且不显示任何错误:/
    • @CihanZengin 我的索引错误。也可以查看 codepen,codepen.io/Flamenco/pen/OowNoK。我使用的是 (5,2) 而不是 (5,7)。
    【解决方案2】:

    如果您经常使用时间,我建议您使用Moment.js,因为它支持大量操作。

    Here some more Docsa related SO Post

    【讨论】:

    • date-fns 是更好的 momentjs,因为它的模块化结构只允许导入需要的函数。
    • @BennettDams 感谢您的有趣评论,我阅读了更多关于它的内容,您是对的,每天都在学习^^ 再次感谢这里是文章推荐raygun.com/blog/moment-js-vs-date-fns
    • 可能你理解的不正确,我的问题不是格式化时间数据,我的问题是通过过滤访问数据的第一个和第二个字符
    猜你喜欢
    • 1970-01-01
    • 2019-12-04
    • 2020-05-16
    • 1970-01-01
    • 2019-01-10
    • 2018-12-09
    • 2021-08-22
    • 2021-10-31
    • 1970-01-01
    相关资源
    最近更新 更多