美文网首页
简单遍历vue2.0文档(二)

简单遍历vue2.0文档(二)

作者: 前端咸蛋黄 | 来源:发表于2019-05-03 16:04 被阅读0次
8. 组件
8.1 注册组件

组件的data要用函数形式

<div id='app'>
  <component1></component1>
  <component2></component2>
</div>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
<script>
  Vue.component('component2', {
    data:function(){
      return {
        data2:'我是全局注册的数据',
      }
    },
    template:'<div>{{data2}}</div>',
  })
  var app = new Vue({
    el:'#app',
    components: {
      component1:{
        data:function(){
          return {
            data1:'我是局部注册的数据'
          }
        },
        template:'<div>{{data1}}</div>'
      }
    }
  })
</script>
8.2 父给子组件通信

传递静态props

<div id='app'>
  <my-component title='父组件向子组件传递数据'></my-component>
</div>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
<script>
  Vue.component('my-component', {
    props: ['title'],
    template:'<div>{{title}}</div>',
  })
  var app = new Vue({
    el:'#app',
  })
</script>

传递动态props

<div id='app'>
  <my-component v-bind:title='msg'></my-component>
</div>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
<script>
  Vue.component('my-component', {
    props: ['title'],
    template:'<div>{{title}}</div>',
  })
  var app = new Vue({
    el:'#app',
    data:{
      msg: '父组件向子组件传递数据'
    }
  })
</script>
8.3 子给父组件通信
<div id='app'>
  <div>{{tip}}</div>
  <my-component v-on:aaa=title></my-component>
</div>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
<script>
  Vue.component('my-component', {
    template:'<button @click=trans>点我</button>',
    data () {
      return {
        msg: '子组件向父组件传递数据 '
      }
    },
    methods:{
      trans:function(){
        this.$emit('aaa',this.msg)
      }
    }
  })
  var app = new Vue({
    el:'#app',
    data:{
      tip:'父组件:'
    },
    methods: {
      title:function(value){
        this.tip = this.tip + value
      }
    }
  })
</script>
8.4 同级组件通信
<div id='app'>
  <component1></component1>
  <component2></component2>
</div>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
<script>
  Vue.component('component1', {
    template:'<button @click=trans>组件1:点我传递数据</button>',
    data () {
      return {
        msg: '子组件向父组件传递数据 '
      }
    },
    methods:{
      trans:function(){
        this.$root.bus.$emit('aaa',this.msg)
      }
    }
  })
  Vue.component('component2', {
    template:'<div>{{title}}</div>',
    data () {
      return {
        title: '组件2:'
      }
    },
    mounted () {
      this.$root.bus.$on('aaa',(value)=>{this.title += value})
    }
  })
  var app = new Vue({
    el:'#app',
    data:{
      bus:new Vue()
    }
  })
8.5 插槽

8.5.1 插槽内容

<div id='app'>
  <my-component>插槽里的显示内容</my-component>
</div>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script>
<script>
  Vue.component('my-component', {
    template:'<div><p>普通的内容</p><slot>如果组件标签间的内容为空,我就显示<slot></div>',
  })
  var app = new Vue({
    el:'#app',
  })
</script>

8.5.2 具名插槽
8.5.3 作用域插槽
8.5.4 访问slot

相关文章

网友评论

      本文标题:简单遍历vue2.0文档(二)

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