導航:首頁 > 安裝方法 > vue頁面載入時調用方法寫在哪裡

vue頁面載入時調用方法寫在哪裡

發布時間:2023-06-27 07:48:50

❶ vue如何動態調用方法

通常我們會在組件里的 template 屬性定義模板,或者是在 *.vue 文件里的 template 標簽里寫模板。但是有時候會需要動態生成模板的需求,例如讓用戶自定義組件模板,或者設置組件的布局。
例如要做一個類 select 的組件,用戶傳入 options 數據,通過 value prop 獲取選中值,最基本的原型如下。
Vue.component('XSelect', {
template: `
<div class="select">
<input :value="value" readonly />
<div
class="option"
v-for="option in options"
@click="value = option.value">
<span v-text="option.label"></span>
</div>
</div>`,

props: ['value','options']
})

如果此時需要增加一個 API 支持讓用戶自定義 option 部分的模板。此處用 slot 並不能解決問題。
通過 $options.template 修改
通過列印組件對象可以獲得一個信息,在 $options 里定義了一個 template 屬性,寫在 template 標簽里的模板,最終編譯後也會在 $options.template 里。通過文檔的生命周期 可以得知,在 created 的時候, 實例已經結束解析選項, 但是還沒有開始 DOM 編譯 也就是說,如果用戶通過 prop 的數據我們可以獲得,但是模板其實還沒有渲染成 DOM。經過測試,在 created 修改 this.$options.template 是可以改變最終生成的 DOM 的,同時也能拿到 props 的內容。
那麼我們可以修改下代碼,使其支持自定義模板
Vue.component('XSelect', {
props: [
'value',
'options',
{
name: 'template',
default:'<span v-text="option.label"></span>'
}
],

created() {
varoptionTpl =this.template

this.$options.template =`
<div class="select">
<input :value="value" readonly />
<div
class="option"
v-for="option in options"
@click="value = option.value">
${optionTpl}
</div>
</div>`
}
})

用戶使用是就可以傳入模板了
<x-select
:value.sync="value"
template="<span>標簽: {{ option.label }}, 值: {{ option.value }}</span>"
:options="[
{value: 1, label: 'a'},
{value: 2, label: 'b'},
{value: 3, label: 'c'}
]">
</x-select>

可能存在的問題
我們知道 Vue 在內部幫我們做了許多優化,但是在這里可能會由於某些優化導致動態拼接的模板無法渲染成功。例如這里我們不使用 v-for 而是手工遍歷 options 生成需要的 HTML
consttpl = options.map(opt =>`<div>${this.optionTpl}</div>`)

this.$options.template =`
<div class="select">
<input :value="value" readonly>
${tpl}
</div>`

這里會導致一個 BUG,如果一個頁面有多個 x-select 組件,並且 options 長度不一樣,會導致長的 options 的組件後面幾個選項渲染不出來。究其原因是 Vue 會幫我們緩存模板編譯結果。翻看代碼可以找到 vue/src/instance/internal/lifecycle.js 里有做優化,同時提供的 _linkerCachable 本意是給 內聯模板 使用。我們可以通過設置 this.$options._linkerCachable = false 達到我們的目的。
這樣我們就可以開發讓用戶自定義布局的組件了,用戶傳入布局參數,通過手工拼接模板,設置了 _linkerCachable = false 也不會被緩存。
通過 $options.partials 動態添加 partial
使用 partials 也能達到添加自定義模板的目的,但是通常的做法是要全局注冊 partial,這么做並不優雅。 vue-strap 就是這么做的。如果重名了會被覆蓋(初次渲染不會,但是數據更新重新渲染 DOM 時就會被覆蓋)。
通過文檔我們知道可以在組件內部通過 partials 屬性注冊局部的 partial,因此自然而然也可以在 this.$options.partials 去動態添加了。

❷ vue子頁面調用父頁面方法

第一種方法是直接在子組件絕差中通過this.$parent.event來調用父組件的方法

父組件

子頁面

第二種方法是在子組件里用$emit向父組件觸發一歲迅個事件,b了。

父組乎宏此件

子組件

第三種是父組件把方法傳入子組件中,在子組件里直接調用這個方法

父組件

子組件

❸ 編程大白話之-vue頁面之間方法的互調

1.利用ref

2.通過組件的 on方法;

1.直接在子組件中通過this.$parent.event來調用父組件的方法

2.在子組件中使用$emit向父組件觸發一個事件,父組件監聽這個事件

3.父組件把方法傳入子組件中,在圓物逗子組件里直接調用這個方法

以上方法,效率有所不同,根據螞塌實際需橘賣求選擇合適的方法。

❹ vue組件調用另外一個組件中的方法

在項目中,我們可能碰到這樣的需求:在vue組件中調用另外一個組件中的方法,讓其執行對應的函數,下面是我總結的一些方法,不足之處希望訂正謝謝。

一:如果是父子關系的話,我們可以使用下面的辦法

二:如果結構比較復雜,或者不能確定 children 的下標。我們可以使用下面的辦法
1、 首先在被調用的vue組件中把方法寫入到vuex中( 下面的方法是吧vue組件中的所有方法都保存了)

2、vuex中

3、在需要調用的組件中調用即可

以上方法是在vue2中測試,vue3中可以試著列印一下this看看哦

閱讀全文

與vue頁面載入時調用方法寫在哪裡相關的資料

熱點內容
汽車數字儀表系統常用檢測方法 瀏覽:239
肩胛骨反射區鍛煉方法 瀏覽:577
華為手環跟手機連接方法 瀏覽:133
汕頭有機砷去除解決方法 瀏覽:638
兒童自行車車筐如何安裝方法 瀏覽:262
660驅動安裝方法 瀏覽:876
可行性研究報告撰寫方法 瀏覽:628
白脈軟膏使用方法 瀏覽:298
喉骨軟化有沒有什麼好的治療方法 瀏覽:635
貴州中元節新式寫包的正確方法 瀏覽:877
做沙包的步驟帶有說明方法 瀏覽:722
萬聖手機殼製作方法 瀏覽:500
常用的浸提方法包括超濾法 瀏覽:663
惠普筆記本開機密碼在哪裡設置方法 瀏覽:736
投籃瞄準方法和技巧 瀏覽:742
馬粟樂使用方法 瀏覽:315
食用油最簡單的方法 瀏覽:677
食用油哪些方法 瀏覽:122
健身地膠點訓練方法 瀏覽:747
透明手機解鎖方法 瀏覽:990