Vue组件间之间传值实力分析


本文摘自PHP中文网,作者王雪芹,侵删。

在我们入门Vue的时候,不得不提到组件,在某些情况下,组件间需要互相传值,比如父组件需要向子组件传值,子组件需要向父组件传值,那么下面用一个实力来详细说明。

效果:

我们想实现这样一个效果,在输入框输入文字点击提交按钮后,下面会出现对应的输入内容。如果点击某个内容,那么这个内容就消失。

如下图,比如我们在点击2的时候,2就会消失

微信截图_20200811180017.png

分析:

1、首先我们会获取到input的输入内容,把所有输入内容都集合成一个数组,在<li><li>循环数据。因为<li><li>都是相同的结构,我们可以把<li><li>做成一个组件,数组是在父层,定义的<li><li>组件是子组件,这就是父组件向子组件传值,把数据传给子组件。

2、点击<li><li>某个选项,该选项会消失。那么<li><li>组件会向上通知父组件,当前点击的是哪个,需要父层的数组数据中哪个去掉,这就是子组件向父组件传值。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

<div id="root">

         

        <input v-model="inputValue" />

        <button @click="handleSubmit">提交</button>

         

        <ul>

            <todo-item v-bind:content="item"

                       v-bind:index="index"

                       v-for="(item,index) in list"

                       @delete="handleItemDelete"

            ></todo-item>

        </ul>

    </div>

 

    <script>

 

        var TodoItem={

            props:['content','index'],

            template:"<li @click='handleItemClick'>{{content}}</li>",

            methods:{

                handleItemClick:function(){

                    this.$emit('delete',this.index);

                }

            }

        }

 

        new Vue({

            el:"#root",

            data:{

                inputValue:'',

                list:[]

            },

            components:{

                'TodoItem':TodoItem

            },

            methods:{

                handleSubmit:function(){

                    this.list.push(this.inputValue)

                    this.inputValue = ''  //每次提交后清空

                },

                handleItemDelete:function(index){

                    this.list.splice(index,1);

                }

            }

        })

    </script>

通过代码我们不难发现,子组件向父组件传值主要在这里:

1

this.$emit('delete',this.index);

另外需要注意到,在Vue中以$开头的都叫做vue的实例属性或者方法,除此之前还需要注意有一些简写,比如<button v-on="handleSubmit">提交</button>和<button @click='handleSubmit'>提交</button > 是相同的效果。

相关推荐:《javascript高级教程

以上就是Vue组件间之间传值实力分析,升职加薪,大家加油!

以上就是Vue组件间之间传值实力分析的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

Vue组件间之间传值实力分析

vue.js 学习之四:vue 组件基础

更多相关阅读请进入《Vue组件》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...