iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 20
1
自我挑戰組

愛寫什麼就寫什麼,開心最重要系列 第 20

Day20-Alpine.js燈箱應用與$nextTick

  • 分享至 

  • xImage
  •  

先附上 $nextTick 的說明吧

$nextTick 是一個魔術屬性,它允許你只在 Alpine 進行回應式 DOM 更新後才執行給定的運算式。這對於你想在 DOM 狀態回應了你的任何資料更新後,再與之互動的情形下非常有用。

簡言之,就是在DOM 更新後才執行
那麼我用燈箱來一起說明

    <div x-data="{isOpen:false}">
        <button @click="
            isOpen=true 
            $nextTick(() => $refs.closeBtn.focus())
            "
        >open</button>
           
        <div class="mask" x-show="isOpen==true">
            <div class="lightBox">
                I'm light box. <br>
                <button 
                    @click="isOpen=false" 
                    x-ref="closeBtn"
                >close</button>
            </div>
        </div>
    </div>

燈箱的部分跟之前Day15側邊攔作法很相似,這就不多做說明了。
這次主要講 x-ref$nextTick
x-ref可以放在你要撈取資料的地方,
然後幫它取個名字,像是x-ref="closeBtn"
那麼我要找它的時候只要$refs.closeBtn後面是你要找的ref的名字,
那麼這邊$refs.closeBtn.focus()就是希望可以focuse在這按鈕上的一個動作,
$nextTick(() => $refs.closeBtn.focus())把動作拿走,
$nextTick(() => 動作)意思就是當DOM更新完成後,就會執行箭頭函式裡的動作,
另外要注意的點是$nextTick(() => 動作)是放在@click=""事件的引號裡面喔。


上一篇
Day19-Alpine.js之x-init與fetch
下一篇
Day21-Alpine.js滾輪應用
系列文
愛寫什麼就寫什麼,開心最重要30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言