Vue中组件间的传值(子传父,父传子)

我会带着你远行 2023-09-28 21:06 156阅读 0赞
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>TodoList</title>
  8. <script src="https://cdn.jsdelivr.net/npm/vue@2.7.8/dist/vue.js"></script>
  9. </head>
  10. <body>
  11. <!-- 组件化改造内容:list标签组件化 -->
  12. <div id="app">
  13. <input type="text" v-model="inputValue">
  14. <button v-on:click="handleBtnClick">提交</button>
  15. <ul>
  16. <!-- todo-item就是组件名TodoItem,这里不区分大小写 -->
  17. <!-- v-bind绑定值 3@delete事件绑定,item是数组的内容,index是数组的下标-->
  18. <todo-item v-bind:content="item"
  19. v-bind:index="index"
  20. v-for="(item,index) in list" @delete="handleItemDelete">
  21. </todo-item>
  22. </ul>
  23. </div>
  24. <script>
  25. // 父传子-在父组件使用子组件的地方通过v-bind进行传值,在子组件中通过props进行接受传过来的值。
  26. // 子传父-在子组件中通过$emit向外抛出一个事件,通过在父组件使用子组件的地方监听该事件,就要拿到子组件传过来的值。
  27. // 在写Vue代码的时候不要直接操作DOM,而是要通过数据的改变,让页面去自动更正变化。
  28. // 创建全局组件的一个方法Vue.component
  29. Vue.component('TodoItem',{
  30. props: ['content','index'], // 接收外部传入的v-bind:content的值,父组件todo-item向子组件TodoItem传值
  31. template:"<li @click='handleItemClick'>{
  32. {content}}</li>", // 1创建一个模板。v-on:click简写@click,v-bind:可以简写为:
  33. methods:{
  34. handleItemClick:function(){
  35. this.$emit('delete',this.index) // 2当点击子组件的时候,子组件会向外出发一个delete事件,在父组件中创建子组件的同时,可以去监听delete事件
  36. }
  37. }
  38. });
  39. var app = new Vue({
  40. el:'#app',
  41. data:{
  42. list:[],
  43. inputValue:''
  44. },
  45. methods:{
  46. handleBtnClick:function(){
  47. this.list.push(this.inputValue);
  48. this.inputValue = '';
  49. },
  50. handleItemDelete:function(index){
  51. // 4定义删除方法,使用index作为参数
  52. // this.list = [] // 清空所有数据
  53. this.list.splice(index,1) // 传入的数据下标减一
  54. }
  55. }
  56. })
  57. </script>
  58. </body>
  59. </html>

发表评论

表情:
评论列表 (有 0 条评论,156人围观)

还没有评论,来说两句吧...

相关阅读