美文网首页测试员的那点事
零基础学vue-组件传值

零基础学vue-组件传值

作者: 望月成三人 | 来源:发表于2020-10-31 10:38 被阅读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>

其他的方式

  • 子组件直接调用父元素的方法,不用自定义事件
    <button @click="$parent.changeEvent(product.title)">选择商品</button>
  • 子组件直接调用父元素中的变量进行操作
    <button @click="$parent.choose=product.title">选择商品</button>
  • 也可以使用$root
    • $root使用场景:当子组件层数太多,只用$root回到根节点
      <button @click="$root.changeEvent(product.title)">选择商品</button>

总结

  • 父传子(推荐使用),子组件使用props接受父元素的值
  • 子传父(推荐使用),子组件传值给父元素使用this.$emit
  • 其他方式是子组件中的click方法直接调用父元素的方法/变量:$parent,$root
  • 父元素可以直接用$children操作子组件中的内容

相关文章

  • 零基础学vue-组件传值

    其他的方式 子组件直接调用父元素的方法,不用自定义事件 选择商品 子组件直接调用父元素中的变量进行操作 选择商品 ...

  • Vue父子组件通信和双向绑定

    本篇文章主要介绍父子组件传值,组件的数据双向绑定。 1. 基础父子组件传值 父子组件传值,这是Vue组件传值最常见...

  • vue-组件传值

    1.前言 组件传值 不管 vue 还是react 亦或某个框架都是重点记得有篇文章写了 ,其实有些情况 完全可以用...

  • 前端基础搬运工-VUE模块

    十、VUE模块 基础部分 1. Vue组件间传值 答: -[ ] 1.父子之间的传值 父组件向子组件传值通过p...

  • Vue父传子、子传夫通信--小案例

    父传子 子传夫 如有不懂,可以看我的 Vue-组件通信

  • 【Vue】组件 - 验证props

    本节需要基础:【Vue】组件通信(父传子 props) props主要作用是让父组件传值给子组件。 普通的传值方式...

  • Vue组件(二)组件传值

    一、父组件向子组件传值 我们可以用props向子组件传值; 1. 基础用法 组件代码 父组件使用 2.props验...

  • Vue-基础-04-重点

    Vue-基础-day04-重点 01-基础-组件-局部组件 组件: 封装html+css+js 两类+三步 定义 ...

  • 零基础学vue-动态组件

    总结 组件里面把内容写死,不推荐使用;template:" 个人内容 " 使用 的方式编写组件内容,比第一种好点,...

  • Vue - 传值

    Vue 传值有两种:1)父组件向子组件传值(属性传值,Prop传值)2)子组件向父组件传值 一、父组件向子组件传值...

网友评论

    本文标题:零基础学vue-组件传值

    本文链接:https://www.haomeiwen.com/subject/wrksvktx.html