Blogger Information
Blog 145
fans 7
comment 7
visits 165524
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Vue组件:父子组件间数据的传递
李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰
Original
926 people have browsed it

父级数据传递给子级:

1.父级组件通过v-bind把数据绑定到子组件的标签属性中。
2.自己组件通过实列props属性来接收父级传过来的数据即可
3.代码

  1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>组件间数据的传递</title>
  8. <script src="vue.js" type="text/javascript" charset="utf-8"></script>
  9. </head>
  10. <body>
  11. <div class="app">
  12. <label for="num1">第一个数据:</label><input type="text" id="num1" v-model.number="num1">
  13. <label for="num2">第二个数据:</label><input type="text" id="num2" v-model.number="num2">
  14. <sum :sum="sum"></sum>
  15. </div>
  16. </body>
  17. <script>
  18. const vm=new Vue({
  19. el:".app",
  20. data:{
  21. num1:1,
  22. num2:2,
  23. },
  24. computed:{
  25. sum(){
  26. return this.num1+this.num2;
  27. }
  28. },
  29. components:{
  30. sum:{
  31. props:["sum"],
  32. template:`<h4>{{sum}}</h4>`,
  33. }
  34. }
  35. })
  36. </script>
  37. </html>

4.演示结果


子组件数据传递给父级组件

1.子组件的挂载点:html内容必须有一个标签包裹
2.子组件传数据

  • 主要通过子组件的$emit(“event”,参数)触发器
  • 触发器来传递至调用子组件时绑定在自定义事件@event的父级函数来传递给父级数据
    3.代码
    1. <!DOCTYPE html>
    2. <html lang="zh">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>组件间数据的传递</title>
    8. <script src="vue.js" type="text/javascript" charset="utf-8"></script>
    9. </head>
    10. <body>
    11. <div class="app">
    12. <span-sum @get="getsum"></span-sum>
    13. <h1>{{sum}}</h1>
    14. </div>
    15. <template id="son">
    16. <div>
    17. <label for="num1">第一个数据:</label><input type="text" id="num1" v-model.number="num1">
    18. <label for="num2">第二个数据:</label><input type="text" id="num2" v-model.number="num2">
    19. <button type="button" @click="getsum()">计算</button>
    20. <span>{{sum}}</span>
    21. </div>
    22. </template>
    23. </body>
    24. <script>
    25. // 子组件
    26. const spanSum={
    27. data(){
    28. return {
    29. num1:1,
    30. num2:2,
    31. sum:3,
    32. }
    33. },
    34. template:"#son",
    35. methods:{
    36. getsum(){
    37. this.sum=this.num1 + this.num2;
    38. this.$emit('get',this.sum);
    39. }
    40. }
    41. }
    42. // 父组件
    43. const vm=new Vue({
    44. el:".app",
    45. data:{
    46. sum:"答案",
    47. },
    48. components:{
    49. spanSum,
    50. },
    51. methods:{
    52. getsum(sum){
    53. console.log(sum);
    54. this.sum=sum;
    55. }
    56. }
    57. })
    58. </script>
    59. </html>
    4、演示结果

组件的基础知识:

1.组件实际上就是一个Vue实例,只不过时通过自定义标签名隐式挂载的
2.创建组件关键字:Vue.extend({})
3.注册全局组件:Vue.component(“自定义标签名”,组件)
4.组件的数据data,必须是一个函数的return返回值
5.组件可以重复利用,且是一个封闭的对象(避免污染全局)
6.一般不建议创建全局组件
7.全局组件,可以载任何vue实例模板中直接使用
8.代码

  1. <!DOCTYPE html>
  2. <html lang="zh">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>组件的组成和分类</title>
  8. <script src="vue.js" type="text/javascript" charset="utf-8"></script>
  9. </head>
  10. <body>
  11. <div class="app">
  12. {{leave}}
  13. <child-div></child-div>
  14. <child-div></child-div>
  15. <!-- <child></child>
  16. <child></child>
  17. <child></child> -->
  18. </div>
  19. <template id="child">
  20. <span>子组件</span>
  21. </template>
  22. </body>
  23. <script type="text/javascript">
  24. // 创建组件
  25. const child=Vue.extend(
  26. {
  27. template:"#child",
  28. }
  29. );
  30. // 注册全局组件
  31. Vue.component("childDiv",child);
  32. const vm=new Vue({
  33. el:".app",
  34. data(){
  35. return {
  36. site:"种业圈",
  37. leave:"父级组件",
  38. }
  39. },
  40. // 局部组件
  41. components:{
  42. // child,
  43. }
  44. })
  45. </script>
  46. </html

9.运行结果

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post