美文网首页
Vue.js基础(二)

Vue.js基础(二)

作者: 壹点微尘 | 来源:发表于2017-09-06 21:26 被阅读12次

    1. 组件之间的通信

    父子组件之间的通信

    向子组件中传递 number=99

    <template>
      <div id="myapp">
        <com-a number=99></com-a>
      </div>
    </template>
    
    <script>
      import ComA from './components/a.vue'
      export default {
        components: {
          ComA
        }
      }
    </script>
    

    子组件a.vue

    <template>
      <div class="hello">
        {{hello}}
        {{ number }}
      </div>
    </template>
    
    <script>
      export default {
    //    声明number属性
    //    未指定类型
    //    props: ['number'],
    //    指定类型
        props: {
          'number': [Number, String]
        },
        data () {
          return {
            hello: 'I am componnet a'
          }
        }
      }
    </script>
    
    

    执行效果

    父组件向子组件传递number=99

    2. 组件之间的通信 - 动态属性传递

    表单里面的内容动态的显示在子组件中

    <template>
      <div id="myapp">
        <input type="text" v-model="myVal">
        <com-a :my-value="myVal"></com-a>
      </div>
    </template>
    
    <script>
      import ComA from './components/a.vue'
      export default {
        components: {
          ComA
        },
        data () {
          return {
            myVal: ''
          }
        }
      }
    </script>
    

    子组件a.vue

    <template>
      <div class="hello">
        {{hello}}
        {{ myValue }}
      </div>
    </template>
    
    <script>
      export default {
    //    声明number属性
    //    未指定类型
    //    props: ['number'],
    //    指定类型
        props: {
          'my-value': [Number, String]
        },
        data () {
          return {
            hello: 'I am componnet a'
          }
        }
      }
    </script>
    
    组件之间的通信 - 动态属性传递
    • 插槽 slot
      向子组件传递一个模板
    <com-a :my-value="myVal">
          <p>我是一个插槽</p>
          <span>123456</span>
    </com-a>
    

    com-a组件中

    <template>
      <div class="hello">
        {{hello}}
        {{ myValue }}
      //给插槽设置默认值
        <slot>no slot</slot>
      </div>
    </template>
    
    插槽里面有内容
    如果传递的插槽里面没有内容,为空
    <com-a :my-value="myVal"></com-a>
    

    给插槽设置默认值

    <slot>no slot</slot>
    

    则显示


    QQ20170906-211129@2x.png
    • 具名Slot
    <template>
      <div id="myapp">
        <!--具名插槽-->
        <com-a :my-value="myVal">
          <p slot="header">xxxx header</p>
    
          <p slot="footer">yyyy footer</p>
        </com-a>
      </div>
    </template>
    

    com-a组件中

    <template>
      <div class="hello">
        {{hello}}
        {{ myValue }}
        <!--<slot>no slot</slot>-->
        <br>
        <slot name="header">no header</slot>
        <p>乱七八糟的内容</p>
        <slot name="footer">no footer</slot>
      </div>
    </template>
    

    执行结果:


    具名插槽

    3. 组件之间的通信 - 动态组件

    # is

    <table>
      <tr is="my-row"></tr>
    </table>
    

    具体参考文档,没怎么讲!
    https://cn.vuejs.org/v2/api/#is

    相关文章

      网友评论

          本文标题:Vue.js基础(二)

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