• 使用组件的细节点


    1.is可解决h5页面的小bug。

    tr与tbody在页面显示变成同级

     错误代码如下:

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

    修改后的代码:

    <body>
      <div id="root">
        <table>
          <ul>
            <tr is="row"></tr>
            <tr is="row"></tr>
            <tr is="row"></tr>
          </ul>
      </div>
      <script>
        Vue.component('row',{
          template:'<tr><td>This is row</td></tr>'
        })
        var vm=new Vue({
          el:'#root'
        })
      </script>
    
    </body>

    结论:is可解决h5页面的小bug.同理,ul下,selection下的的li,option需要加is="",即可解决bug问题。

     2.在子组件里面,定义data,data必须是一个函数,不能是一个对象,是为每个子组件都能有一个独立的存储,不能互相影响。

    <body>
      <div id="root">
        <table>
          <ul>
            <tr is="row"></tr>
            <tr is="row"></tr>
            <tr is="row"></tr>
          </ul>
      </div>
      <script>
        Vue.component('row',{
          data:function(){
            return{
              content:'this is content'
            }
          },
          template:'<tr><td>{{ content}}</td></tr>'
        })
        var vm=new Vue({
          el:'#root'
        })
      </script>
    
    </body>

    3.通过rel获取dom节点.如果是用在组件上,则是组件上的引用,通过this.$reds.refName。

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

    实例:计数器的使用。

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>计数器</title>
    <script src="./vue.js"></script>
    </head>
    <body>
      <div id="root">
       <counter ref="one" @change="handleChange"></counter>
        <counter ref="two" @change="handleChange"></counter>
        <div>{{total}}</div>
      </div>
      <script>
        Vue.component('counter',{
          template:'<div @click="handleClick">{{number}}</div>',
          data:function(){
            return{
              number:0
            }
          },
          methods:{
            handleClick:function(){
              this.number++
              this.$emit('change')
            }
          }
        })
       
        var vm=new Vue({
          el:'#root',
          data:{
            total:0
          },
          methods:{
            handleChange:function(){
              this.total=this.$refs.one.number+this.$refs.two.number
            }
          }
    
        })
      </script>
    
    </body>
    
    </html>
  • 相关阅读:
    谈谈站桩
    mysql开发之---使用游标双层嵌套对总表进行拆分为帖子表和回复表
    【Xcode学C-3】if等流程控制、函数的介绍说明标记分组、#include以及LLVM
    hdu5303(2015多校2)--Delicious Apples(贪心+枚举)
    Hadoop最大值的算法中出现的错误(strToDouble)
    利用管道进行通信
    HDU 5308 规律+模拟
    深入浅出理解排序算法之-选择排序
    Jscript 随记
    SharedPreferences具体解释(一)——基础知识
  • 原文地址:https://www.cnblogs.com/tengteng0520/p/12066721.html
Copyright © 2020-2023  润新知