测试员的那点事

零基础学vue-组件传值

2020-10-31  本文已影响0人  望月成三人
<html>
    <head>
        <meta charset="utf-8">
        <title>组件传值</title>
        <script type="application/x-javascript" src="js/vue.js"></script>
    </head>
    <body>
        <div id="app">
            <ul>
                <!--从父组件传值到子组件product-com,props取product绑定来自父组件item的值 -->
                <!--@toparent触发在子组件自定义的事件,把值传给父元素是通过changeEvent -->
                <product-com v-for="item,index in proList" :product="item" @toparent="changeEvent(item.title)"></product-com>
            </ul>
            <p>选择的商品为:{{choose}}</p>
        </div>
        <script type="application/javascript">
            <!--产品组件 -->
            Vue.component("product-com", {
                props: ["product"],
                template: `
                <li>
                    <h3>产品名称{{product.title}}</h3>
                    <h4>产品价格{{product.price}}</h4>
                    <h5>产品描述{{product.desc}}</h5>
                    <button @click="chooseEvent(product.title)">选择商品</button>
                </li>
                `,
                methods: {
                    chooseEvent: function(title) {
                        console.log(title)
                        <!--通过$emit把子元素的值传给父元素,自定义触发toparent这个事件 -->
                        this.$emit("toparent", title)
                    }
                }

            })

            let app = new Vue({
                el: "#app",
                data: {
                    proList: [{
                            "title": "产品1",
                            "price": 10,
                            "desc": "描述1"
                        },
                        {
                            "title": "产品2",
                            "price": 20,
                            "desc": "描述2"
                        },
                        {
                            "title": "产品2",
                            "price": 30,
                            "desc": "描述3"
                        }
                    ],
                    choose: "",

                },
                methods: {
                    changeEvent: function(title) {
                        console.log("title")
                        this.choose = title
                    }
                },
                mounted(){
                    <!--此生命周期,表示已经完成dom和css的加载 -->
                    console.log(this)
                    <!--这里可以用打印出来$children属性,可以直接控制子组件的内容 -->
                }
            })
            })
        </script>
    </body>
</html>

其他的方式

总结

上一篇 下一篇

猜你喜欢

热点阅读