15_vue组件传参父给子.html 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <div id="app">
  10. <div>
  11. <!-- 组件传参 父组件给子组件传参通过属性绑定的方式 -->
  12. <!-- 父组件中可以使用变量的方式给子组件传参 但一定要用v-bind指令绑定 -->
  13. <box v-bind:val="i"></box>
  14. <box v-bind:val="j"></box>
  15. </div>
  16. </div>
  17. <template id="box-temp">
  18. <div>
  19. <h1 @click="addFun">{{num2}}</h1>
  20. </div>
  21. </template>
  22. <script src="./js/vue.js"></script>
  23. <script>
  24. new Vue({
  25. el: '#app',
  26. data:{
  27. i:10,
  28. j:20
  29. },
  30. components:{
  31. "box":{
  32. template:"#box-temp",
  33. data(){
  34. return{
  35. // 子组件中可以使用props接受父组件传参
  36. // 为了避免直接修改props中的值 所以在data中重新定义一个属性接受props中的值
  37. num2:this.val
  38. }
  39. },
  40. // 组件传参 子组件接收父组件传参通过props属性的方式
  41. // 可以接受多个参数所以用数组的方式
  42. // props 接受的值不可以在子组件中修改
  43. props:["val"],
  44. methods:{
  45. addFun(){
  46. this.num2++
  47. }
  48. }
  49. }
  50. }
  51. })
  52. </script>
  53. </body>
  54. </html>