码迷,mamicode.com
首页 > 其他好文 > 详细

前端-Vue基础2

时间:2020-07-20 00:00:53      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:使用   map   全局   color   inpu   功能   钩子函数   经历   number   

1.过滤器

前台通过后台传值,要对后台传过来的变量进行特殊处理,比如根据id转成中文等;

1.1 局部过滤器

局部过滤器只针对一个Vue实例

默认将|左侧count传递给右侧方法

{{count|filterFunc}}

可以传多个参数
{{count|filterFunc("test")}}

func:function(value,test){

}

<body>
<div id="app">
    {{count|change(‘百分比‘)}}
    {{status|changeStatus}}
</div>

<script src="js/vue.js"></script>
<script>
    new Vue({
        el:#app,
        data:{
            msg:test,
            count:19,
            status:1
        },
        filters:{
            change:function (value,flag) {
                console.log(value:,value)
                console.log(flag:,flag)
                return value+%
            },
            changeStatus:function (status) {
                if(status==1){
                    return 成功
                }else if(status==2){
                    return 失败
                }
            }
        }
    })
</script>
</body>

显示结果如图所示:

19% 成功

1.2 全局过滤器

全局过滤器可以针对所有的vue,只要引用都可以使用

Vue.filter(‘allNumber‘,function (value) {
        return value + ‘&‘
    })
    
new Vue({
        el:‘#app‘,
        data:{
            msg:‘test‘,
            count:19,
            status:1
        }
    })

<div id="app">
    <div>{{count|allNumber}}</div>
</div>

2.vue的生命周期

vue的生命周期:是指vue实例化到页面经历了哪些步骤

钩子函数:预留了几个特殊的方法

<body>
<!--vue的生命周期:是指vue实例化到页面经历了哪些步骤-->
<!--钩子函数:预留了几个特殊的方法-->
 <div id="app">
        {{msg}}
 </div>
<script src="js/vue.js"></script>
<script>
    new Vue({
        el:#app,
        data:{
            msg:‘‘
        },
        beforeCreate:function () {
            //实例化后,数据还没有初始化
            console.log(beforeCreate)
        },
        created:function () {
            //数据初始化后
            console.log(created)
        },
        beforeMount:function () {
            //未和标签进行关联前
            console.log(beforeMount)
        },
        mounted:function () {
            //实例和标签进行关联后
            //可以用来获取后台列表数据
            this.msg=获取后台列表数据
            console.log(mounted)
        },
        beforeUpdate:function () {
            //数据更新前
            console.log(beforeUpdate)
        },
        updated:function () {
            //数据更新后
            console.log(updated)
        }
    })
</script>
</body>

3.$refs

this.$refs.test // 获取到标签  可以理解为 document.getElementbyID 获取的是标签对象

<body>
<div id="app">
<!--    需求:点击子组件的数字,自增1,点击test按钮,父组件的值等于子组件的值相加-->
    <test ref="a"></test>
    <test ref="b"></test>
    <div>父组件--<span>{{count}}</span></div>
    <input type="button" value="test" @click="change">
</div>
<script src="js/vue.js"></script>
<script>
    Vue.component(test,{
        template:<div>子组件--<span @click="add">{{number}}</span></div>,
        data:function () {
            return{
                number:0
            }
        },
        methods:{
            add:function () {
                this.number++
            }
        }
    })

    new Vue({
        el:#app,
        data:{
            count:0
        },
        methods:{
            change:function () {
                //this.$refs.a = document.getElementById(‘a‘)
                this.count = this.$refs.a.number+this.$refs.b.number
            }
        }
    })
</script>
</body>

 

4.组件(复用代码,抽象公用代码)

组件:将公用的功能抽离出来,形成组件

目的:复用代码

4.1 全局组件

<body>
<div id="app">
<!--    引用组件-->
    <demo></demo>
    <demo></demo>
    <demo></demo>
</div>
<script src="js/vue.js"></script>
<script>
    Vue.component(demo,{
        template:<h1 @click="change">{{msg}}</h1>,
        data:function () {
            //组件中的data,必须是个方法
            //如果引用了demo这个组件,就可以使用它的变量,如果是map形式的,改变了变量msg的值,其他组件的msg的值也会跟着该笔爱
            //如果是data是一个方法,msg只作用域data这个方法,如果改变msg的值,其他组件的msg变量不会跟着改变
            return {
                msg:msg
            }
        },
        methods:{
            change:function () {
                this.msg = test
            }
        }
    })

    new Vue({
        el:#app
    })
</script>
</body>

4.2 局部组件

<body>
<div id="app">
<!--    引用组件-->
    <demo></demo>
    <demo-key></demo-key>
</div>
<script src="js/vue.js"></script>
<script>
    Vue.component(demo,{
        template:<h1 @click="change">{{msg}}</h1>,
        data:function () {
            //组件中的data,必须是个方法
            //如果引用了demo这个组件,就可以使用它的变量,如果是map形式的,改变了变量msg的值,其他组件的msg的值也会跟着该笔爱
            //如果是data是一个方法,msg只作用域data这个方法,如果改变msg的值,其他组件的msg变量不会跟着改变
            return {
                msg:msg
            }
        },
        methods:{
            change:function () {
                this.msg = test
            }
        }
    })

    new Vue({
        el:#app,
        components:{
            "demo-key":{
                template:<h1 @click="change">{{count}}</h1>,
                    data:function () {
                        return{
                            count:0
                        }
                    },
                methods:{
                    change:function () {
                        this.count++
                    }
                }
            }
    }
    })
</script>
</body>

4.3 is规避错误

多层标签封装为组件时,不能直接使用,要用is来规避组件渲染的错误

<body>
<div id="app">
    <table border="1px">
        <thead>
            <th>id</th>
        </thead>
        <tbody>
        <!--    多层标签封装为组件时,不能直接使用,要用is来规避组件渲染的错误-->
            <tr is="tr-demo"></tr>
<!--            <tr-demo></tr-demo>-->
        </tbody>
    </table>
</div>
<script src="js/vue.js"></script>
<script>
    Vue.component(tr-demo,{
        template:<tr><td>1111</td></tr>
    })

    new Vue({
        el:#app
    })
</script>
</body>

 

前端-Vue基础2

标签:使用   map   全局   color   inpu   功能   钩子函数   经历   number   

原文地址:https://www.cnblogs.com/cjxxl1213/p/13341166.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!