美文网首页
组件和$emit传值

组件和$emit传值

作者: 琳媚儿 | 来源:发表于2020-05-19 16:30 被阅读0次

例:
组件分解
定义一个名为header-from 的新组件

<div id="app">
 <header-from></header-from>
</div>

将template 模板中的内容提出了( type="text/x-template" )

 <script type="text/x-template" id="header-add-from">
       <form></form>
   </script>
    Vue.component('header-from', {         
            template: 'header-add-from ',
        })

事件抛出一个值$event

@addfruit="addfruitChange($event)"

当在父级组件监听这个事件的时候,我们可以通过 $event 访问到被抛出的这个值

<div id="app">
        <header-from @addfruit="addfruitChange($event)"></header-from>
        <div>
            <ul v-for="item in items" :key="item.id">
                <li>
               
                </li>
            </ul>

        </div>
    </div>

this.$emit('addfruit',fruit) 触发一个名字为'addfruit'的事件,抛出fruit 事件,此案例中fruit事件中包含的时输入框中新增数据

<script>
 Vue.component('header-from', {         
            template: '#header-add-from',
            methods: {
                addData: function (items) {
                    let fruit={
                       id: ++maxId,
                        name:this.$refs.fruitname.value,
                        price:this.$refs.fruitprice.value
                    }
                    this.$emit('addfruit',fruit)    
                    console.log(fruit);
                                   
                }
            }
        })
</script>

触发addfruitChange()事件时,将fruit数据放入items数组中

new Vue({
            el: '#app',
            data: {
                items: []
            },
            created() {
                fetch('http://localhost:3000/test')
                    .then(res => res.json())
                    .then(data => {
                        this.items = data
                    })
            },
            methods:{
                addfruitChange:function(fruit){
                    let p=fruit;
                    this.items.push(p)
                }
            }
        })

逻辑代码v-if:

定义一个组件,判断 ,详情页不等于null 就显示,等于null就隐藏:
@click="showDetail(product)" 触发事件时

<div id="app">
        <table>
            <tbody v-for="(product,index) in products" :key="index">
                <tr @click="showDetail(product)"></tr>
            </tbody>
        </table>

 <detail-from v-if="currentDetail!=null" @hide-me="currentDetail=null" :product="currentDetail"></detail-from>
</div>
  <script type="text/x-template" id="detail-show">
        <button @click="$emit('hide-me')">隐藏</button><br>
  </script>
    <script>
        Vue.component('detail-from', {
            template: '#detail-show',
            props: ['product']
        })
    </script>
<script>
  new Vue({
           el: '#app',
           data: {
                currentDetail: null,
                products: []
         },
   methods: {
                showDetail: function (product) {
                    //让数据等于null 隐藏
                    this.currentDetail = product
                    // console.log(showDetail);
                },
            }
})
</script>

相关文章

  • vue组件通信

    通常父子组件通信都是用props和$emit进行传递,父组件通过props传值给子组件,子组件通过$emit传值给...

  • Day5 拾遗 emit

    vue emit多个参数利用arguments来获取子组件传值或者兄弟组件通过emit传值, 通过argument...

  • vue--三种组件中之间的传值

    一、父子组件之间的传值----props/$emit 组件之间的传值,我们比较常用到的是props/$emit 1...

  • Vue组件通信,父传子,子传父

    子组件 父组件 效果 总结 子组件接收父组件传值 (props) 子组件传值給父组件($emit())

  • vue 组件之间的传值2018-10-24

    1、子组件往父组件传值,通过emit事件 this.$emit(事件名称,参数) for数据 ...

  • 组件和$emit传值

    例:组件分解定义一个名为header-from 的新组件 将template 模板中的内容提出了( type="t...

  • 简单的todo-list

    利用v-model双向数据绑定父组件向子组件传值用 props子组件向父组件传值用 $emit()

  • Vue中 子组件与父组件之间的传值

    一、子组件向父组件传值 1、子向父传值 需要用到自定义事件 $emit。 2、this.$emit('自定义的事件...

  • 组件通信

    vue传值可分为父子之间传值、兄弟组件之间传值、跨代组件之间传值 1.父子之间传值:可以使用$emit/props...

  • Vue3——组件传值 & v-model & 异步组件 & te

    一、父子组件传值 父组件通过props向子组件传值,子组件通过emit触发自定义事件传递新值给父组件。props:...

网友评论

      本文标题:组件和$emit传值

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