中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解vue.js數據傳遞以及數據分發slot

發布時間:2020-10-12 20:30:50 來源:腳本之家 閱讀:144 作者:laozhang 欄目:web開發

一、組件間的數據傳遞

1.父組件獲取子組件的數據  

*子組件把自己的數據,發送到父級

*vm.$emit(事件名,數據);

*v-on: @

示例用法:當點擊send按鈕的時候,“111”變成“我是子組件的數據”

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>父級獲取子級的數據</title>
  <script src="bower_components/vue/dist/vue.js"></script>
  <style>
  </style>
</head>
<body>
<div>
  <aaa>
  </aaa>
</div>
<template>
  <span>我是父級 -> {{msg}}</span>
  //自動調用get方法,@child-msg和下面的this.$emit('child-msg',this.a)相對應
  <bbb @child-msg="get"></bbb>
</template>
<template>
  <h4>子組件-</h4>
  <input type="button" value="send" @click="send">
</template>
<script>
  var vm=new Vue({
    el:'#box',
    data:{
      a:'aaa'
    },
    components:{
      'aaa':{
        data:function(){
          return {
            msg:111,
            msg2:'我是父組件的數據'
          }
        },
        template:'#aaa',
        methods:{
          //這里的msg實際上就是子組件傳遞給父組件的數據
          get:function(msg){
            this.msg=msg;
          }
        },
        components:{
          'bbb':{
            data:function(){
              return {
                a:'我是子組件的數據'
              }
            },
            template:'#bbb',
            methods:{
              send:function(){
                this.$emit('child-msg',this.a);
              }
            }
          }
        }
      }
    }
  });
</script>
</body>
</html>

2、子組件獲取父組件的數據

在調用子組件:

<bbb :m="數據"></bbb>

子組件之內:

props:['m','myMsg']
props:{
'm':String,
'myMsg':Number
        }

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>自己獲取父級的數據</title>
  <script src="bower_components/vue/dist/vue.js"></script>
  <style>
  </style>
</head>
<body>
<div>
  <div>{{a}}</div>
  <aaa>
    {{msg}}
  </aaa>
</div>

<template>
  <h2>11111</h2>
  <bbb :mmm="msg2" :my-msg="msg"></bbb>
</template>
<script>
  var vm=new Vue({
    el:'#box',
    data:{
      a:'a'
    },
    components:{
      'aaa':{
        data:function(){
          return {
            msg:111,
            msg2:'我是父組件的數據'
          }
        },
        template:'#aa',
        components:{
          'bbb':{
            props:{
              'mmm':String,
              'myMsg':Number
            },
            template:'<h4>我是bbb組件->{{mmm}} <br> {{myMsg}}</h4>'
          }
        }
      }
    }
  });

</script>
</body>
</html>

運行結果:

詳解vue.js數據傳遞以及數據分發slot

二、內容分發:

Vue.js提供了一種混合父組件內容與子組件自己模版的方式:slot,用來占一個位置

1、基本用法 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>slot保留原來的位置</title>
  <script src="bower_components/vue/dist/vue.js"></script>
  <style>
  </style>

</head>
<body>
<div>
  <aaa>
    <ul>
      <li>1111</li>
      <li>2222</li>
      <li>3333</li>
    </ul>
  </aaa>
  <hr>
  <aaa>
  </aaa>
</div>
<template>
  <h2>xxxx</h2>
  <slot>這是默認的情況</slot>
  <p>welcome vue</p>
</template>

<script>
  var vm=new Vue({
    el:'#box',
    data:{
      a:'aaa'
    },
    components:{
      'aaa':{
        template:'#aaa'
      }
    }
  });

</script>
</body>
</html>

運行結果:ul標簽里面的內容沒有被覆蓋,如果不使用slot,ul標簽里的內容將會被覆蓋

詳解vue.js數據傳遞以及數據分發slot

2、slot的name屬性 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>slot中name屬性的使用</title>
  <script src="bower_components/vue/dist/vue.js"></script>
  <style>
  </style>
</head>
<body>
<div>
  <aaa>
    <ul slot="ul-slot">    //這里slot的名字要與下面slot中name屬性相對應
      <li>1111</li>
      <li>2222</li>
      <li>3333</li>
    </ul>
    <ol slot="ol-slot">    //用法同上
      <li>111</li>
      <li>222</li>
      <li>333</li>
    </ol>
  </aaa>
  <hr>
  <aaa>
  </aaa>
</div>
<template>  
  <h2>xxxx</h2>
  <slot name="ol-slot">這是默認的情況</slot>      //設置name屬性,給slot命名
  <p>welcome vue</p>
  <slot name="ul-slot">這是默認的情況2</slot>
</template>

<script>
  var vm=new Vue({
    el:'#box',
    data:{
      a:'aaa'
    },
    components:{
      'aaa':{
        template:'#aaa'
      }
    }
  });

</script>
</body>
</html>

 運行結果:

詳解vue.js數據傳遞以及數據分發slot

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台前县| 黑水县| 贵港市| 陵川县| 磐石市| 河曲县| 扎赉特旗| 揭西县| 乌兰浩特市| 景谷| 三江| 安远县| 张家川| 鞍山市| 拉萨市| 洞头县| 砚山县| 平泉县| 安福县| 萨嘎县| 长治县| 肇源县| 铜川市| 衡水市| 中西区| 通道| 庆城县| 中宁县| 吉木乃县| 阜新| 平武县| 炎陵县| 临江市| 高碑店市| 四子王旗| 汾西县| 阆中市| 桦甸市| 邛崃市| 滦南县| 蓝山县|