vue中遇到的坑
1 一個是eventHub的坑–重複監聽的問題:解決方案監聽之前先off掉
2 路由的坑–不加replace會兩個頁面來回跳,無法正常的返回父級頁面。
3 vuejs對data中陣列的原生方法進行了封裝,所以在改變陣列時能夠觸發檢視更新,但是以下兩種情況是無法觸發檢視的更新的:
1 通過索引直接修改陣列的元素,例如vm.items[0] = {title: 'title'}
2 無法直接修改陣列的長度,例如vm.items.length = 0
解決方案; 對於第一種vue提供了
另外一個列表渲染的時候的有一個性能的小技巧: 如果陣列中本身自帶一個唯一的標識 id 例如
itmes: [
{_id: 1,title: ‘title1’}
{_id: 2,title: ‘title2’}
{_id: 3,title: ‘title3’}
]
在渲染的時候,通過trace-by給陣列設定唯一的標識,這樣vuejs在渲染過程中會盡量重複原有物件的作用域和dom元素。
4 v-text 引數是string,作用是更新元素的textContent。{{}} 文字插值本身也是做這個事情的,但是v-text的優點在於可以避免未編譯前的閃現問題
如果直接使用{{msg}} 在生命週期beforeMount期間,此刻的msg資料尚未編譯至{{msg}}中,使用者能看到一瞬間的{{msg}} 然後
閃現為 there is a message 而用v-text的話就不會有這個問題
5 v-el 和 v-ref
v-el 指令為dom元素註冊了一個索引,使得我們可以直接的訪問DOM元素,語法上說可以通過所屬例項的$els屬性呼叫。例如
there is a el demovm.$els.demo.innerText // -> there is a el demo
注意,由於HTML是不區分大小寫的,在v-el中如果使用了駝峰式的命名,系統會自動轉成小寫,但是你可以使用中劃線-來連線你期望大寫的字母
vm.$els.camelcase.innerText: 用小寫的方式拿
如果你用中劃線
there is a camelcase 這樣你再拿的時候就會可以方便的使用你喜歡的駝峰式了vm.$els.camelCase.innerText
好了介紹完了 v-el 其實v-ref 跟它是類似的,只不過是v-ref是作用在子元件上的罷了