您的位置:首页 > 技术中心 > 前端框架 >

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

时间:2020-08-12 12:35

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

效果:

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

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

微信截图_20200811180017.png

分析:

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

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

  1. <div id="root">
  2. <input v-model="inputValue" />
  3. <button @click="handleSubmit">提交</button>
  4. <ul>
  5. <todo-item v-bind:content="item"
  6. v-bind:index="index"
  7. v-for="(item,index) in list"
  8. @delete="handleItemDelete"
  9. ></todo-item>
  10. </ul>
  11. </div>
  12. <script>
  13. var TodoItem={
  14. props:['content','index'],
  15. template:"<li @click='handleItemClick'>{{content}}</li>",
  16. methods:{
  17. handleItemClick:function(){
  18. this.$emit('delete',this.index);
  19. }
  20. }
  21. }
  22. new Vue({
  23. el:"#root",
  24. data:{
  25. inputValue:'',
  26. list:[]
  27. },
  28. components:{
  29. 'TodoItem':TodoItem
  30. },
  31. methods:{
  32. handleSubmit:function(){
  33. this.list.push(this.inputValue)
  34. this.inputValue = '' //每次提交后清空
  35. },
  36. handleItemDelete:function(index){
  37. this.list.splice(index,1);
  38. }
  39. }
  40. })
  41. </script>

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

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

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

相关推荐:《javascript高级教程》

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

以上就是Vue组件间之间传值实力分析的详细内容,更多请关注www.gxlsystem.com其它相关文章!

本类排行

今日推荐

热门手游