Vue 组件:$ref & 父子组件的数据传递 & 组件参数校验与非 props 特性 & 给组件绑定原生事件 & 非父子组件间的传值 & 在 Vue 中使用插槽 & 作用域插槽 & 动态组件

使用组件的细节点

<table>
	<tbody>
	  <row></row>
	  <row></row>
	  <row></row>
	</tbody>
</table>
<script>
Vue.component('row', {
    
  template: '<tr><td>This is a row</td></tr>'
})
var vm = new Vue({
    
  el: '#app'
})
</script>

我们发现 tr 不在 tbody 里面,原因是 HTML5 规定 table 下面必须是 tbody,tbody 下面必须是 tr。
所以我们需要在 tbody 下面写 tr,但是我们可以通过 is 属性来指明模版。

<table>
	<tbody>
	  <tr is="row"></tr>
	  <tr is="row"></tr>
	  <tr is="row"></tr>
	</tbody>
</table>
<script>
Vue.component('row', {
    
  template: '<tr><td>This is a row</td></tr>'
})
var vm = new Vue({
    
  el: '#app'
})
</script>

<div id="app">
  <table>
    <tbody>
      <tr is="row"></tr>
      <tr is="row"></tr>
      <tr is="row"></tr>
    </tbody>
  </table>
</div>
<script>
  Vue.component('row', {
    
    data() {
    
      return {
    
        content: 'This is a row'
      }
    },
    template: '<tr><td>{
    {content}}</td></tr>'
  })
  var vm = new Vue({
    
    el: '#app'
  })
</script>

在子组件中定义 data 时,data 必须是一个函数,不能是一个对象。


ref 引用

我希望 div 被点击的时候,把 div 的内容打印出来。

<div id="app">
  <div ref="hello" @click="handleClick">hello world</div>
</div>
<script>
  var vm = new Vue({
    
    el: '#app',
    methods: {
    
      handleClick() {
    
        console.log(this.$refs.hello.innerHTML); 
      }
    }
  })
</script>

$refs 指所有引用, .hello 就是 ref=“hello” 这个引用。

$ref 在组件中的使用:

「 计数器 」
<div id="app">
  <counter></counter>
</div>
<script>
  Vue.component('counter', {
    
    data() {
    
      return {
    
        number: 0
      }
    },
    template: '<div @click="handleClick">{
    {number}}</div>',
    methods: {
    
      handleClick() {
    
        this.number++;
      }
    }
  })
  var vm = new Vue({
    
    el: '#app'
  })
</script>

「 counter 求和 」
<body>
  <div id="app">
    <counter ref="one" &
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值