zoukankan      html  css  js  c++  java
  • Vue基础-在模板中使用过滤器

    Vue 测试版本:Vue.js v2.5.13

    官网给了过滤器的两种使用方式:

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

    结合实例,我给两个代码:

    <div id="app">       
         <input 
         type="text" 
         v-model="id" 
         placeholder="please enter your id"
         />
         <p>your id is:  {{ id| formatId }}</p>
    </div>
    window.onload = function() {
        new Vue({
            el: '#app',
            data: {
                id: ''
            },
            filters: {
                formatId(v) {
                    return v.length < 10 && v.length > 0 ? v.padStart(10, '0') : v;
                }
            },
        });
    };

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

    方式 2 换一种 js 就行,html 不用变:

    window.onload = function() {
        Vue.filter('formatId', function(v) {
            return v.length < 10 && v.length > 0 ? v.padStart(10, '0') : v;
        });
    
        new Vue({
            el: '#app',
            data: {
                id: ''
            },
        });
    };

    比较好理解,但是我觉得可以完善下,因为上面都没有用模板;

    如果用了模板,第一种就失效了,只有第二种可行:

    <div id="app">
         <my-ele :id="id"></my-ele>
    </div>
    window.onload = function() {
        Vue.component('my-ele', {       
            template: `
            <div>
              <input type="text" v-model="id"/>
              <p>you id:  {{id | formatId}}</p>
            </div>
            `,
            props: ['id']
        });
    
        Vue.filter('formatId', function(v) {
            return v.length < 10 && v.length > 0 ? v.padStart(10, '0') : v;
        });
    new Vue({
            el: '#app',
            data: {
                id: ''
            }
        });
    };

    虽然 开发环境下 会报错,但不影响功能,

    image

    如果把 js 换成第一种,就会失败:

    window.onload = function() {
        Vue.component('my-ele', {       
            template: `
            <div>
              <input type="text" v-model="id"/>
              <p>you id:  {{id | formatId}}</p>
            </div>
            `,
            props: ['id']
        });
    
        new Vue({
            el: '#app',
            data: {
                id: ''
            },
            filters: {
                formatId(v) {
                    return v.length < 10 && v.length > 0 ? v.padStart(10, '0') : v;
                }
            }
        });
    };

    功能失效;

    如果采用 render() 函数,就更复杂了些,详情戳 Vue-双向绑定:从 html 到 模板 到 渲染函数

    参考文档:

    https://cn.vuejs.org/v2/guide/filters.html

  • 相关阅读:
    Linux下vi和vim模式相互切换
    Linux文件系统目录
    华硕笔记本(UEFI)支持U盘启动
    什么是RSS feed?订阅RSS有什么好处?
    JSTL的时间格式化标签的使用
    token session区别 以及JWT无状态token
    c++ 重载成员函数的地址如何获取
    c++ __VA_ARGS__
    协程任务调度器
    yield return 1
  • 原文地址:https://www.cnblogs.com/xianshenglu/p/8485657.html
Copyright © 2011-2022 走看看