美文网首页
vue过滤器

vue过滤器

作者: 寒梁沐月 | 来源:发表于2017-04-03 12:00 被阅读45次

    1.过滤器的写法

    {{ message | Filter}}
    

    2.Vue1自带的过滤器

    capitalize    首字母大写
    uppercase    全部大写
    uppercase   全部小写
    currency   输出金钱以及小数点
                       参数:
                       第一个参数     {String} [货币符号] - 默认值: '$'
                       第二个参数     {Number} [小数位] - 默认值: 2
    debounce     需在@里面使用 包装处理器,让它延迟执行 x ms
    limitBy     限制:需在v-for(即数组)里面使用
                       参数:
                       第一个参数:{Number} 取得数量
                       第二个参数:{Number} 偏移量
    filterBy     需在v-for(即数组)里面使用
                       三个参数:
                       第一个参数: {String | Function} 需要搜索的字符串
                       第二个参数: in (可选,指定搜寻位置)
                       第三个参数: {String} (可选,数组格式)
    orderBy     需在v-for(即数组)里面使用
                       三个参数:
                       第一个参数: {String | Array<String> | Function} 需要搜索的字符串
                       第二个参数: {String} 可选参数 order 决定结果升序(order >= 0)或降序(order < 0),默认是升序
    

    3.自定义过滤器

    注意事项:
    (1)全局方法 Vue.filter() 注册一个自定义过滤器,必须放在Vue实例化前面
    (2) 过滤器函数始终以表达式的值作为第一个参数。带引号的参数视为字符串,而不带引号的参数按表达式计算
    (3)可以设置两个过滤器参数,前提是这两个过滤器处理的不冲突
    (4)用户从input输入的数据在回传到model之前也可以先处理
    例(全局):
        <body>
            <div class="test">
                <p>{{message | sum}}</p>
                <p>{{message | cal 10 20}}</p>  <!--过滤器函数始终以表达式的值作为第一个参数。带引号的参数视为字符串,而不带引号的参数按表达式计算。-->
                <p>{{message | sum | currency }}</p> <!--添加两个过滤器,注意不要冲突-->
                
                <input type="text" v-model="message | change"> <!--用户从input输入的数据在回传到model之前也可以先处理-->
                
            </div>
            <script type="text/javascript">
            
    //        -----------------------------------------华丽分割线(从model->view)---------------------------------------
                Vue.filter("sum", function(value) {   //全局方法 Vue.filter() 注册一个自定义过滤器,必须放在Vue实例化前面
                    return value + 4;
                });
                
                Vue.filter('cal', function (value, begin, xing) {   //全局方法 Vue.filter() 注册一个自定义过滤器,必须放在Vue实例化前面
                    return value + begin + xing;
                });
    
    //        -----------------------------------------华丽分割线(从view->model)---------------------------------------
                Vue.filter("change", {
                    read: function (value) { // model -> view 在更新 `<input>` 元素之前格式化值
                        return value;
                    },
                    write: function (newVal,oldVal) { // view -> model  在写回数据之前格式化值
                        console.log("newVal:"+newVal); 
                        console.log("oldVal:"+oldVal);
                        return newVal;
                    }
                });
    
                var myVue = new Vue({
                    el: ".test",
                    data: {
                        message:12
                    }
                });
                
            </script>
        </body>
    例(局部):
        <body>
            <div class="test">
                <p>{{message | sum}}</p>
                <p>{{message | cal 10 20}}</p>  <!--过滤器函数始终以表达式的值作为第一个参数。带引号的参数视为字符串,而不带引号的参数按表达式计算。-->
                <p>{{message | sum | currency }}</p> <!--添加两个过滤器,注意不要冲突-->
                
                <input type="text" v-model="message | change"> <!--用户从input输入的数据在回传到model之前也可以先处理-->
                
            </div>
            <script type="text/javascript">
                Vue.filter("change", {
                    read: function (value) { // model -> view 在更新 `<input>` 元素之前格式化值
                        return value;
                    },
                    write: function (newVal,oldVal) { // view -> model  在写回数据之前格式化值
                        console.log("newVal:"+newVal); 
                        console.log("oldVal:"+oldVal);
                        return newVal;
                    }
                });
    
                var myVue = new Vue({
                    el: ".test",
                    data: {
                        message:12
                    },
                    filters: {
                        sum: function (value) {
                            return value + 4;
                        },
                        cal: function (value, begin, xing) {
                            return value + begin + xing;
                        }
                    }
                });
                
            </script>
        </body>
    

    相关文章

      网友评论

          本文标题:vue过滤器

          本文链接:https://www.haomeiwen.com/subject/mennottx.html