美文网首页
7.vue组件

7.vue组件

作者: yaoyao妖妖 | 来源:发表于2018-07-07 16:03 被阅读16次

    1.is标签

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vue组件</title>
        <!--引入/vue.js-->
        <script src="./vue.js"> </script>
    </head>
    <body>
       <div id="root">
           <table>
               <tbody>
                 <!-- tbody中只能是tr,所以使用is属性来表示他真实的是row组件 -->
                  <tr is="row"></tr>
                  <tr is="row"></tr>
                  <tr is="row"></tr>
    
                  <select>
                      <option is="row"></option>
                  </select>
    
                  <ul>
                        <li is="row"></li>
                  </ul>
               
               </tbody>
           </table>
      
    
       </div>
    
       <script>
           Vue.component('row',{
               template:'<tr><td>this is a row template</td></tr>'
    
           })
    
           var app = new Vue({
               el:'#root',  
    
           })
    
       </script>
    
    </body>
    
    </html>
    
    1. 非根组件的data
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vue组件</title>
        <!--引入/vue.js-->
        <script src="./vue.js"> </script>
    </head>
    <body>
       <div id="root">
           <table>
               <tbody>
                 <!-- tbody中只能是tr,所以使用is属性来表示他真实的是row组件 -->
                  <tr is="row"></tr>
                  <tr is="row"></tr>
                  <tr is="row"></tr>           
               </tbody>
           </table>
      
    
       </div>
    
       <script>
           Vue.component('row',{
    
            // 在除了根组件的data只能是一个function(),不能是一个对象,同事要求返回你对应的数据
            // 因为非根组件可能被调用多次,所以它对应的数据应该是独有的,通过函数返回是为了让每一个非根组件有一套独立的数据
               data: function(){
                   return {
                       content:'this is Content'
                   }
               },
               template:'<tr><td>{{content}}</td></tr>'
    
           })
    
           var app = new Vue({
               el:'#root',  
           // 根组件的data可以是一个对象
    
    
           })
    
       </script>
    
    </body>
    
    </html>
    
    1. ref引用
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vue组件</title>
        <!--引入/vue.js-->
        <script src="./vue.js"> </script>
    </head>
    <body>
       <div id="root">
    
        <!-- ref引用名字为hello -->
           <div  
               ref='hello'
               @click="handleClick"
           >
               hello wordld
            </div>
    
       </div>
    
       <script>
    
           var app = new Vue({
               el:'#root',  
               methods:{
                handleClick:function () {
                    // this.$refs当前vue所有的ref引用
                    // this.$refs.hello即div对用的dom节点,在view中获取dom节点
                    console.log(this.$refs.hello.innerHTML)   
                }
    
               }
           })
    
       </script>
    
    </body>
    
    </html>
    
    1. ref组件引用
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>vue组件</title>
        <!--引入/vue.js-->
        <script src="./vue.js"> </script>
    </head>
    <body>
       <div id="root">
    
        <!-- ref引用名字为hello -->
          <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 ++
    //对应上面的@change,'change'不写会报错
                     this.$emit('change')
                }
               }
           })
    
           var app = new Vue({
               el:'#root', 
               data:{
                   total:0
    
               },
               methods:{
                handleChange:function(){
                    this.total = this.$refs.one.number + this.$refs.two.number
                }
               }
             
           })
    
       </script>
    
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:7.vue组件

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