Vue的组件,过滤器,自定义指令以及v-if

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue的组件,过滤器,自定义指令以及v-if相关的知识,希望对你有一定的参考价值。

参考技术A  <div class="app">

        <h1 v-show="false">我爱你</h1>

v-if是直接将dom删除了,在dom文档中已经找不到对应的dom,变成了注释

        <h1 v-if="false">我爱你</h1>

如果频繁使用 就使用v-show 可以节约性能开销

如果短暂使用,例如页面一开始加载的时候进行判断显示 优先使用v-if

实际开发中,使用v-if比较多

        <li v-for="(item,index) in arr">item</li>

    </div>

    <script src="./node_modules/vue/dist/vue.js"></script>

    <script>

        new Vue(

            el: '.app',

            data:

                msg: 123,

                list: [1, 2, 3]

            ,

            computed:

                arr: function ()

                    return this.list.filter(r => r > 1)

               

            ,

            methods:

           

        )

    </script>

<div class="app">

        <child1></child1>

        <div><child-a/></div>

        <div><child-b/></div>

        <template id="childB">

            <div>

                <h1>我是程序员</h1>

                <h1>我是程序员</h1>

            </div>

        </template>

    </div>

    <script src="./node_modules/vue/dist/vue.min.js"></script>

    <script>

        Vue.component('child1',

            template:`<h1>我是child1</h1>`

        )

        Vue.component('childA',

            template:`<h1>我是childA</h1>`

        )

        Vue.component('childB',

            template:'#childB'

        )

        new Vue(

            el:'.app'

        )

    </script>

<div class="app" v-cloak>

        <h1>'我爱张sir'|str('金牌厨师')</h1>

        <h1>'hello'|he</h1>

    </div>

    <script src="./node_modules/vue/dist/vue.js"></script>

    <script>

        Vue.filter('fn',function(v,s)

            console.log(v);

            return v/* .substring(0,v.indexOf(':')) */+s

        )

        new Vue(

            el:'.app',

            /* 局部过滤器 */

            filters:

                str(v,s)

                    return v+s

                ,

                he(v)

                    return v.split('').reverse().join('')

               

           

        )

当页面刷新的时候data中的数据还没有渲染出来,页面中就会显示原本写的插值语法,这时候就需要消除这个bug

在绑定的实例化对象的元素上上添加v-cloak 并在style样式中添加(只要前面加上v-都可以实现,随意命名,通常使用clock)

            display: none;

       

    <div class="app">

        <input type="text" v-bg>

        <input type="text" v-focus="background:'yellow'">

        <div style="width: 100px;height: 100px;" v-bg></div>

        <p v-sty="background:'pink',color:'yellow'">我是程序员</p>

    </div>

    <script src="./node_modules/vue/dist/vue.js"></script>

    <script>

        Vue.directive('bg', function (el)

            /* 回调的第一个参数就是元素本身 */

            console.log(el);

            el.style.background = 'red'

        )

        /* 全局自定义指令 写全方式 */

        Vue.directive('focus',

            /* 当绑定元素插入到DOM中 */

            inserted: function (el, bind)

                el.focus();

                console.log(bind);

                el.style.background = bind.value.background

           

        )

        new Vue(

            el: '.app',

            /* 局部的自定义指令 要加s */

            directives:

                sty:

                    inserted (el, bind)

                        el.style.background = bind.value.background;

                        el.style.color = bind.value.color

                   

               

           

        )

以上是关于Vue的组件,过滤器,自定义指令以及v-if的主要内容,如果未能解决你的问题,请参考以下文章

vue 自定义指令 自己实现 v-if 和 v-show

vue 自定义指令 自己实现 v-if 和 v-show

vue自定义指令clickoutside使用以及扩展用法

Vue 内置指令自定义指令过滤器

Vue 内置指令自定义指令过滤器

Vue组件--局部过滤器 和 局部自定义指令