zoukankan      html  css  js  c++  java
  • VueJs(13)---过滤器

    过滤器

    过滤器

         1、过滤器规则

           Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:

          双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示:

    <!-- 在双花括号中 -->
    {{ message | capitalize }}
    
    <!-- 在 `v-bind` 中 -->
    <div v-bind:id="rawId | formatId"></div>

         你可以在一个组件的选项中定义本地的过滤器:

    filters: {
      capitalize: function (value) {
        if (!value) return ''
        value = value.toString()
        return value.charAt(0).toUpperCase() + value.slice(1)
      }
    }

     或者在创建 Vue 实例之前全局定义过滤器:

    Vue.filter('capitalize', function (value) {
      if (!value) return ''
      value = value.toString()
      return value.charAt(0).toUpperCase() + value.slice(1)
    })
    
    new Vue({
      // ...
    })

    下面这个例子用到了 capitalize 过滤器:发现首字母大写

    capitalize 过滤器函数将会收到 message 的值作为第一个参数。

    2、过滤器可以串联:

    {{ message | filterA | filterB }}

    这就相当于:

       第一步:先把message放到filterA过滤器中进行过滤

       第二步:将第一步过滤器的结果再放到filterB再进行过滤,显示最终过滤结果。

    3、过滤器是 JavaScript 函数,因此可以接收参数:

    {{ message | filterA('arg1', arg2) }}

     这里,filterA 被定义为接收三个参数的过滤器函数。其中 message 的值作为第一个参数,普通字符串 'arg1' 作为第二个参数,表达式 arg2 的值作为第三个参数。

    小案例

    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <div id="app">
        <span>SearchByName: </span>
        <input v-model="searchQuery">
        <table>
            <thead>
                <tr>
                    <td v-for="col in columns">{{col|capitalize}}</td>
                </tr>
            </thead>
            <tbody>
                <tr v-for="entry in filteredData">
                    <td v-for="col in columns">{{entry[col]}}</td>
                </tr>
            </tbody>
        </table>
    </div>
    
    <script>
        new Vue({
            el: '#app',
            data: {
                searchQuery: '',
                columns: ['name', 'gender', 'age'],
                data: [{
                    name: 'Jack',
                    gender: 'male',
                    age: 26
                }, {
                    name: 'John',
                    gender: 'female',
                    age: 20
                }, {
                    name: 'Lucy',
                    gender: 'female',
                    age: 16
                }]
            },
            filters: {
                capitalize: function(value) {
                    return value.charAt(0).toUpperCase() + value.slice(1);
                }
            },
            computed: {
                filteredData: function() {
                    var self = this;
    //filter是Javascript带的方法,
    // 前面调用的是需要使用filter的数组类型,而给filter函数传入的是数组中的每个item,也就是说filter里面的函数,是每个item要去做的,并将每个结果返回。
    return this.data.filter(function(item) { return item.name.toLowerCase().indexOf(self.searchQuery.toLowerCase()) !== -1; }) } } }); </script>

    效果:

       使用js中的迭代函数filter :

    其他的一些Js 迭代方法——filter()、map()、some()、every()、forEach()、lastIndexOf()、indexOf()

    参考:

    链接:vue filter的几种用法

    想太多,做太少,中间的落差就是烦恼。想没有烦恼,要么别想,要么多做。上尉【2】

  • 相关阅读:
    党史回顾+十九大习思想+中国历史事件+地理+航天史及古代天文历法
    国际组织
    生活-常识-物理
    生物
    数量题目总结-利润排列组合
    数量题目总结-工程最值集合
    考公错题记录表
    个人向简历介绍
    数据库操作大全
    团队博客作业-技术规格说明书
  • 原文地址:https://www.cnblogs.com/qdhxhz/p/9017357.html
Copyright © 2011-2022 走看看