欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue動態(tài)綁定ref(使用變量)以及獲取方式

 更新時間:2022年08月31日 10:01:41   作者:壞丶毛病  
這篇文章主要介紹了vue動態(tài)綁定ref(使用變量)以及獲取方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

vue動態(tài)綁定ref及獲取

正常情況,我們需要在vue中獲得某個dom或者組件,我們會通過綁定 ref 然后通過綁定后的名字來獲取這個dom 。

但是,如果我們在v-for中綁定ref的話,那么這個ref就會存在多個,比如我們點擊事件讓對應(yīng)的顯示/隱藏的話,我們很難找到這個對應(yīng)的元素。

那么,這時我們需要動態(tài)綁定不一樣的ref(比如 Arr1、Arr2、Arr3這種),那么我們?nèi)绾螌崿F(xiàn)呢?

一起來看下代碼吧

<div class="videoList">
                <el-tree
                    :data="videoData"
                    :highlight-current="false"
                    :props="defaultProps"
                    @node-click="handleNodeClick"
                    @node-expand="handleNodeExpand"
                    @node-collapse="handleNodeCollapse"
                    :filter-node-method="filterNode"
                    class="rd-surveillance-tree"
                    :indent="0"
                    ref="tree"
                >
                    <span class="custom-tree-node" slot-scope="{ node, data }">
                        <span class="custom-tree-label" :title="node.label">
                            <i
                                class="iconfont"
                                :class="data.rtmp ? rtmpClass : iconClass"
                                :style="{
                                    color: data.rtmp ? '#00b7ff' : '#fff',
                                    fontSize: data.rtmp ? '24px' : '14px',
                                }"
                            ></i>
                            {{ node.label }}
                        </span>
                        <span class="custom-tree-player" v-if="!data.rtmp">{{
                            data.children.length
                        }}</span>
                        <img
                            class="custom-tree-player rtmpVideo"
                            v-else
                            src="../../../static/images/videoSurveillance/videoSurveillancePlay.png"
                            @click="playVideo(data)"
                            :ref="'playBtn' + data.id"
                        />
                    </span>
                </el-tree>
            </div>

這里可以看下最下面的圖片,圖片是個播放按鈕,我需要點擊播放按鈕,播放當前的視頻,這里通過slot-scope綁定每一個對應(yīng)的數(shù)據(jù)(可以變相的理解為v-for循環(huán)),采用餓了么的組件庫

那么我們點擊對應(yīng)的圖片按鈕,就得播放對應(yīng)的視頻,那么我們得獲取到對應(yīng)的dom元素,如果綁定同樣的ref的話,那么就很難找到指定點擊對應(yīng)的視頻源

這里采取動態(tài)綁定ref ,命名采取 playBtn + (數(shù)據(jù)id) ,這樣每個都會綁定不同的名字

注:這里說下比較坑的一點,我們一般字符串加變量都會采用如下寫法

`playBtn${data.id}`

但是我們綁定ref的話是需要加冒號的,但是加了之后就不需要去再采取模板字符串的寫法,直接在引號中寫入即可。

然后這里說下怎么獲?。?/strong>

正常我們綁定是 ref="name" ,獲取就是this.$refs.name ,這里的name是自己命名的,但是它會被默認為變量,然后去找取,而不是當做字符串處理

那么我們獲取上面動態(tài)綁定的,就不能寫 點 語法,可以采取方括號寫法:

play(data){
    this.$refs[`playBtn${data.id}`].src =  require('../../../static/images/Pause.png');
}

data是上面圖片綁定的點擊事件傳入的,獲取到當前的data,然后獲取到id,就可以找到指定的ref綁定的dom,然后改變播放狀態(tài)即可。

注意:之前測試是不用加下標的,但是之后有次在另一個項目里寫發(fā)現(xiàn)需要加下標,即 this.$refs[`playBtn${data.id}`][0] ,所以獲取不到的時候不妨先打印下日志,檢查下需不需要加下標,以及有沒有獲取到對應(yīng)的ref。

看下餓了么改造的tree:

好了,如上就是動態(tài)綁定ref以及獲取的方法。

ref三種使用方法

ref

  • - 給子元素綁定ref屬性,這樣父元素就能得到綁定了ref屬性的元素/組件
  • - refs獲取  得到的是一個集合
  • - refs要通過事件或者生命周期獲取
    // 方法一: 字符串 (廢棄)
    showRef=()=>{
        console.log(this.refs)
        //得到的是所有綁定了ref的元素/組件
    }
    render() {
        return (
            <div>
                父組件
                <button onClick={this.showRef}>獲取ref</button>
                <Mother ref='mother' ></Mother>
            </div>
        )
    }    
    // 方法二
    import React, { Component,createRef } from 'react'
    btn=createRef()
    showRef=()=>{
        // 輸出ref 鍵名為current
        console.log(this.btn)
    }
    render() {
        return (
            <div>
                <button onClick={this.showRef}>獲取ref</button>
                <Mother ref={this.btn} ></Mother>
            </div>
        )
    }
//方法三:
    change=()=>{
        console.log(this.inp)
    }
    render() {
        return (
            <div>
                <input 
                type='text' 
                onChange={this.change} 
                ref={inp=>{this.inp=inp}}/>
            </div>
            //參數(shù)inp為當前標簽dom元素,this指向組件
        )
    }

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue中的正則表達式校驗、驗證

    vue中的正則表達式校驗、驗證

    這篇文章主要介紹了vue中的正則表達式校驗、驗證方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • vue利用指令實現(xiàn)快速設(shè)置元素的高度

    vue利用指令實現(xiàn)快速設(shè)置元素的高度

    在項目中經(jīng)常有需要將列表的高度設(shè)置成剩余可視區(qū)域的高度,本文主要來和大家介紹一下如何通過指令和css變量的方式快速設(shè)置列表高度,希望對大家有所幫助
    2024-03-03
  • vue里input根據(jù)value改變背景色的實例

    vue里input根據(jù)value改變背景色的實例

    今天小編就為大家分享一篇vue里input根據(jù)value改變背景色的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • ElementUI多個子組件表單的校驗管理實現(xiàn)

    ElementUI多個子組件表單的校驗管理實現(xiàn)

    這篇文章主要介紹了ElementUI多個子組件表單實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • el-date-picker設(shè)置日期默認值兩種方法(當月月初至月末)

    el-date-picker設(shè)置日期默認值兩種方法(當月月初至月末)

    這篇文章主要給大家介紹了關(guān)于el-date-picker設(shè)置日期默認值(當月月初至月末)的相關(guān)資料,文中通過代碼示例將解決的辦法介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • vue后臺管理添加多語言功能的實現(xiàn)示例

    vue后臺管理添加多語言功能的實現(xiàn)示例

    這篇文章主要介紹了vue后臺管理添加多語言功能的實現(xiàn)示例,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下
    2021-04-04
  • 詳解vue如何使用rules對表單字段進行校驗

    詳解vue如何使用rules對表單字段進行校驗

    這篇文章主要介紹了詳解vue如何使用rules對表單字段進行校驗,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • vue實現(xiàn)多個tab標簽頁的切換與關(guān)閉詳細代碼

    vue實現(xiàn)多個tab標簽頁的切換與關(guān)閉詳細代碼

    這篇文章主要給大家介紹了關(guān)于vue實現(xiàn)多個tab標簽頁的切換與關(guān)閉的相關(guān)資料,使用vue.js實現(xiàn)tab切換很簡單,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-10-10
  • vue.js實現(xiàn)單選框、復(fù)選框和下拉框示例

    vue.js實現(xiàn)單選框、復(fù)選框和下拉框示例

    本篇文章主要介紹了vue.js實現(xiàn)單選框、復(fù)選框和下拉框示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • vue watch監(jiān)控對象的簡單方法示例

    vue watch監(jiān)控對象的簡單方法示例

    這篇文章主要給大家介紹了關(guān)于vue watch監(jiān)控對象的簡單方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01

最新評論