vue_组件细节点

1.子组件的is使用

2.子组件的data函数

3.ref的使用

复制代码
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style type="text/css">
    .activated {color: red}
  </style>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
  <div id="app">
    <table>
      <tbody>
        <!-- h5规定tbody里面放tr>td,页面渲染时看起是一样的,但是dom节点渲染不一样-->
        <!-- ul>li, select>option -->
        <row></row>
        <row></row>
        <row></row>
        <!-- is代表是哪个组件  -->
        <td is="row"></td>
        <td is="row"></td>
      </tbody>
    </table>
    <ul>
      <li is="liRow"></li>
      <li is="liRow"></li>
      <li is="liRow"></li>
    </ul>

    <h3>ref获取dom对象</h3>
    <div ref="getDOM" @click="handleClick"> click me</div>
    
    <h3>组件使用ref,获取的是子组件的引用</h3>
    <counter ref="one" @change="handleChange"></counter>
    <counter ref="two" @change="handleChange"></counter>
    <div>{{total}}</div>

  </div>
</body>
<script type="text/javascript">
  Vue.component('row', {
    //子组件定义数据的时候,必须是一个函数
    //让每个子组件都有独立的数据存储
    data () {
      return {
        content: 'this is a row'
      }
    },
    template:'<tr><td>{{content}}</td></tr>'
  })
  Vue.component('liRow', {
    template:'<li>this is a li</li>'
  })

  Vue.component('counter', {
    data () {
      return {
        count: 0
      }
    },
    template: '<div @click="handleClick">{{count}}</div>',
    methods: {
      handleClick () {
        this.count++
        this.$emit('change')
      }
    }
  })

  let vm = new Vue({
    el: '#app',
    data: {
      total: 0
    },
    methods: {
      handleClick () {
        //$refs对象保存的是vue实例中所有的dom引用
        console.log(this.$refs.getDOM.innerHTML = 'hei jack')
      },
      handleChange () {
        // ref用在组件上时,保存的时组件的引用
        console.log(this.$refs.one)
        this.total = this.$refs.one.count + this.$refs.two.count
      }
    }
  })
</script>
</html>
复制代码

 

posted @   前端之旅  阅读(228)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示