美文网首页
vue自定义过滤器

vue自定义过滤器

作者: 爱鸽子的玉米君 | 来源:发表于2016-11-22 09:49 被阅读935次

    Vue的自定义过滤器有两种:全局过滤器和内部过滤器
    全局过滤器定义在vue实例化之前

    模板内容
    <div class="test">
        <p>{{message | sum}}</p>
        <!--过滤器函数始终以表达式的值作为第一个参数。带引号的参数视为字符串,而不带引号的参数按表达式计算。-->
        <p>{{message | cal 10 20}}</p>  
         <!--添加两个过滤器,注意不要冲突-->
        <p>{{message | sum | currency }}</p>
        <!--用户从input输入的数据在回传到model之前也可以先处理,此处使用的是vue提供的双向过滤器,针对input-->
        <input type="text" v-model="message | change"> 
    </div>
    
    //全局方法 Vue.filter() 注册一个自定义过滤器
    Vue.filter("sum", function(value) {   
        return value + 4;
    });
    
    Vue.filter('cal', function (value, begin, xing) {   
        return value + begin + xing;
    });
    
    Vue.filter("change", {
        // model -> view 在更新 `<input>` 元素之前格式化值
        read: function (value) { 
            return value;
        },
        // view -> model  在写回数据之前格式化值
        write: function (newVal,oldVal) {
            console.log("newVal:"+newVal); 
            console.log("oldVal:"+oldVal);
            return newVal;
        }
    });
    
    var myVue = new Vue({
        el: ".test",
        data: {
            message:12
        }
    })
    

    内部过滤器注册在实例内部,仅在注册它的实例里可用

    <div class="test">
           <p>{{message | sum}}</p>
           <!--过滤器函数始终以表达式的值作为第一个参数。带引号的参数视为字符串,而不带引号的参数按表达式计算。-->
           <p>{{message | cal 10 20}}</p>  
           <!--添加两个过滤器,注意对数据的操作不要冲突-->
           <p>{{message | sum | currency }}</p> 
           <!--用户从input输入的数据在回传到model之前也可以先处理-->      
           <input type="text" v-model="message | change"> 
    </div>
    
    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;
            }
        }
    })   
    

    相关文章

      网友评论

          本文标题:vue自定义过滤器

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