组件

作者: 盖子pp | 来源:发表于2018-07-16 15:58 被阅读0次

    1. 父传子

    Vue实例可以看做是一个父组件,如果想要把父组件的数据传给子组件,可以在子组件中用props接受父组件中传递的数据,在子组件标签中增加一个属性来绑定父组件中的数据

    1.创建Vue实例

     const vm = new Vue({
          el: '#app',
    
          data: {
            list: [
              { id: 1, name: 'jack', content: 'rose, where are you ?' },
              { id: 2, name: 'rose', content: 'who are you ?' },
              { id: 3, name: '小明', content: '我饿了' },
            ]
          }
        })
    

    2.创建子组件

     Vue.component('commentlist', {
          template: `
            <ul>
              <li v-for="item in list" :key="item.id">
                <h3>评论人:{{ item.name }}</h3>
                <p>评论内容:{{ item.content }}</p>
              </li>
            </ul>
          `,
            
          // 接受数据
          props: ['list']
        })
    

    3.在子组件标签中增加属性来接受父组件的数据

     <div id="app">
        <!-- 子组件: -->
        <commentlist :list="list"></commentlist>
      </div>
    

    2.子传父

    父组件提供一个方法,将这个方法传递给子组件,由子组件调用这个方法,将子组件要传递给父组件的数据,通过方法的参数来传递

    1.创建父组件

    Vue.component('parent', {
          template: `
            <div class="parent">
              <h1>这是父组件 -- 技能:{{ skill }}</h1>
          //b.将这个方法传递给子组件
              <child @fn="getSkill"></child>
            </div>
          `,
    
          data () {
            return {
              skill: ''
            }
          },
    
          methods: {
            // a 父组件中提供一个方法
            getSkill (skill) {
              // 参数skill就是子组件中传递过来的数据
              console.log('父亲接受到儿子的技能:', skill)
    
              this.skill = skill
            }
          }
        })
    

    2.创建子组件

    Vue.component('child', {
          template: `
            <div class="child">
              <h2>这是子组件</h2>
              <button @click="teachSkill">教父亲技能</button>
            </div>
          `,
          
          // 如果想要进入页面就传递数据,就可以在 created 钩子函数中来触发 fn
          created () {
            this.$emit('fn')
          },
          
          methods: {
            teachSkill () {
              // 调用父组件中传递过来的方法,将数据作为参数传递
              // 第一个参数:表示要调用的方法名称
              // 第二个参数:表示传递父组件的数据
              this.$emit('fn', '玩手机')
            }
          }
        })
    

    相关文章

      网友评论

          本文标题:组件

          本文链接:https://www.haomeiwen.com/subject/rfjbpftx.html