使用 v-cloak 防止頁面載入時出現 vuejs 的變數名
阿新 • • 發佈:2018-11-10
轉載自:https://www.sunzhongwei.com/hide-vuejs-variable-with-v-cloak-when-page-loading
使用 vuejs 做了一個簡單的功能頁面,邏輯是,頁面載入後獲取當前的經緯度,然後通過 ajax 從後臺拉取附近的小區列表。但是 bug 出現了,在顯示小區列表之前,會閃現小區名對應的 vuejs 變數名。
案發現場的 HTML 程式碼
<ul v-for="item in items">
<li>{{ item.name }}</li>
</ul>
頁面載入時,會閃現
{{ item.name }}
Google 了一下,發現 vuejs 內建的 directive v-cloak 可以解決這個問題。非常簡單
HTML 修改成
<ul v-cloak v-for="item in items">
<li>{{ item.name }}</li>
</ul>
CSS 中新增
[v-cloak] {
display: none;
}
搞定!
但是原理是什麼呢?
這段 CSS 的含義是,包含 v-cloak (cloak n. 披風,斗篷;vt. 遮蓋,掩蓋) 屬性的 html 標籤在頁面初始化時會被隱藏。
在 vuejs instance ready 之後,v-cloak 屬性會被自動去除,也就是對應的標籤會變為可見