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. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <script src="./lib/vue.js"></script>
    9. </head>
    10. <body>
    11. <!-- mytep定义 -->
    12. <template id="mytmp">
    13. <div>
    14. <h1>这是使用template创建出来的组件,有提示和语法功能</h1>
    15. <h3>不错,非常好用</h3>
    16. <h1>我是子组件-------{{ parentmsg }}</h1>
    17. <input type="button" value="我是子组件,点击它触发父组件show方法" @click="click1">
    18. </div>
    19. </template>
    20. <div id="app">
    21. <!-- 调用组件,通过属性绑定的方式传递给子组件内 -->
    22. <mycom3 v-bind:parentmsg="msg" v-on:func="show"></mycom3>
    23. </div>
    24. <script>
    25. Vue.component('mycom3', {
    26. // 组件使用一个定义了一个id为mytmp
    27. template: "#mytmp",
    28. // 子组件接收的父组件,必须把属性写入props列表里面,props里面都是只读的
    29. props: ['parentmsg'],
    30. // data里面都是可读可写的,子组件的数据可以通过ajax请求回来的数据放到data身上
    31. data: function () {
    32. return {
    33. person:{
    34. name:"大头儿子",
    35. age:6
    36. },
    37. title: "qqq",
    38. content: "www"
    39. }
    40. },
    41. methods:{
    42. click1(){
    43. // 点击子组件的方法,触发父类的方法,同时把子类data的person传递给父类
    44. this.$emit('func',this.person)
    45. }
    46. }
    47. })
    48. var vm = new Vue({
    49. el: '#app',
    50. data: {
    51. msg: "我是父组件的msg-data ",
    52. msg2:""
    53. },
    54. methods: {
    55. // data是子类传递过来的person对象
    56. show(data){
    57. console.log("父组件的show方法")
    58. this.msg = this.msg + data.name
    59. }
    60. }
    61. });
    62. </script>
    63. </body>
    64. </html>

    1.gif