Vue-在模板中使用过滤器

Posted xianshenglu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于Vue-在模板中使用过滤器的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段(vue主模板)

VSCode自定义代码片段2——.vue文件的模板

使用vscode,新建.vue文件,tab自动生成vue代码模板

使用vscode,新建.vue文件,tab(enter)自动生成vue代码模板

vscode代码片段生成vue模板

Vue-在模板中使用过滤器