1 父组件给子组件传值

组件中通过props属性传递数据

  1. <body>
  2. <div id="app">
  3. <zj_all></zj_all>
  4. </div>
  5. <script>
  6. var zj_a = {
  7. template: '<div>局部组件定义 {{age}} {{pos}}</div>',
  8. data: function(){
  9. return {age: 18};
  10. },
  11. // 在子组件a中通过props属性定义接受值的名称
  12. props: ['pos']
  13. }
  14. Vue.component(
  15. 'zj_all',
  16. {
  17. // 在父组件中指定子组件中的pos接收父组件的哪个数据
  18. template: '<div>全局组件定义 <zj_a :pos="name"></zj_a></div>',
  19. // 注册局部组件
  20. components:{
  21. zj_a
  22. },
  23. // 组件定义绑定数据
  24. data: function(){
  25. return {name: 'itcast'};
  26. }
  27. }
  28. )

image.png

2 子组件给父组件传值

通过$emit将数据传递个父组件

  1. <body>
  2. <div id="app">
  3. <zj_all></zj_all>
  4. </div>
  5. <script>
  6. var zj_a = {
  7. template: '<div>局部组件定义 {{age}} {{pos}} <button @click="upload">上传</button></div>',
  8. data: function(){
  9. return {age: 18};
  10. },
  11. // 在子组件a中通过props属性定义接受值的名称
  12. props: ['pos'],
  13. // 定义方法, 传值给父组件
  14. methods: {
  15. upload: function(){
  16. this.$emit('aabbcc', this.age);
  17. }
  18. }
  19. }
  20. Vue.component(
  21. 'zj_all',
  22. {
  23. // 在父组件中指定子组件中的pos接收父组件的哪个数据
  24. template: '<div>全局组件定义 <zj_a :pos="name" @aabbcc="show"></zj_a></div>',
  25. // 注册局部组件
  26. components:{
  27. zj_a
  28. },
  29. // 组件定义绑定数据
  30. data: function(){
  31. return {name: 'itcast'};
  32. },
  33. methods: {
  34. show: function(foo){
  35. alert(foo);
  36. }
  37. }
  38. }
  39. )

image.png