vue3.0 加載json的方法(非ajax)
問題
加載json一定要用ajax的方式嗎?
最近學習vue3.0,在實現(xiàn)一個功能的時候發(fā)現(xiàn)一個問題——
寫代碼的時候,需要的json太長、太多,和代碼放在一起太混亂。看代碼總有翻來翻去,又沒有“折疊”功能。
那么能不能把json放在一個單獨的文件里面保存,然后在加載進來呢?
查了半天的資料,發(fā)現(xiàn)那叫一個折騰呀,各種各樣的配置不說,最后還需要用ajax的方式來加載。這個,這么簡單的事情為啥要這么折騰?
你看引用組件是不是很方便?一行代碼就搞定了。就像下面這樣:
import nfInput from '@/components/nf-form-item.vue'
等等,組件??
思路
上面提到了組件,那么能不能把json放在組件里面保存,然后“頁面”里加載組件獲取組件里面的json呢?各種嘗試之后發(fā)現(xiàn)是可以的,涉及幾個關鍵字:
組件、屬性、data、生命周期、$emit、watch
- 先定義一個組件,設置一個屬性,這個屬性不是接收數(shù)據(jù)的,而是返回json的一個橋梁。
- 然后在組件的data里面定義需要的json。
- 在組件的 created 事件里面通過 $emit 向父級提交data(json)數(shù)據(jù)
- 由于是setup先執(zhí)行,組件的created后執(zhí)行,所以需要在setup里面設置watch監(jiān)聽屬性的變化,得到需要的json后賦值給需要的對象。
當然,json可以直接寫在created里面,不過還是感覺放在data里面更適合一些。
解決
定義組件
<template>
<span :value="modelValue"></span> <!--使用span-->
</template>
<script>
export default {
name: 'nf-getjson',
props: {
modelValue: Object // 屬性名稱需要寫modelValue 方便一些
},
data: function () {
return { //需要的json
json: {
controlId: 101,
controlType: 100,
colName: 'abc',
isClear: true,
disabled: false,
required: true,
class: '1',
title: '1',
rows: 5,
cols: 50,
placeholder: '請輸入',
readonly: false
}
}
},
created: function () {
this.$emit('update:modelValue', this.json) // 返回給調用者,vue3.0的改變的地方
}
}
</script>
.vue文件
<template>
<nfJosn v-model="title" /> <!--就是那個傳說中的組件,使用v-model 傳遞數(shù)據(jù)-->
</template>
<script>
import { ref, watch } from 'vue' // 需要watch進行監(jiān)聽
import nfJosn from '@/components/nf-getjson.vue' // 加載組件
export default {
name: 'FormHelp',
components: {
nfHelp
},
setup () {
const value = ref('') // 定義一個屬性
const json = ref({}) // 接收返回的json
// 監(jiān)聽屬性變化
watch(() => value.value, json => {
json.value = json
})
return {
value,
json
}
}
}
</script>
基本就是這樣,不需要加事件。
小結
以上代碼在vue3.0 beta版里測試通過。
也不知道有沒有人用過這種方式,也不知道這種方式是否符合vue的規(guī)范,總之先這么用著,不行再改。
以上就是vue3.0 加載json的方法(非ajax)的詳細內容,更多關于vue3.0 加載json的資料請關注腳本之家其它相關文章!
相關文章
詳解vue中父子組件傳遞參數(shù)props的實現(xiàn)方式
這篇文章主要給大家介紹了在vue中,父子組件傳遞參數(shù)?props?實現(xiàn)方式,文章通過代碼示例介紹的非常詳細,對我們的學習或工作有一定的參考價值,需要的朋友可以參考下2023-07-07
vue出現(xiàn)Uncaught SyntaxError:Unexpected token問題及解決
這篇文章主要介紹了vue出現(xiàn)Uncaught SyntaxError:Unexpected token問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04
vue中使用過濾器filters的this為undefined的問題
這篇文章主要介紹了vue中使用過濾器filters的this為undefined的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-01-01
解決vue創(chuàng)建項目使用vue-router和vuex報錯Object(...)is not a&nb
這篇文章主要介紹了解決vue創(chuàng)建項目使用vue-router和vuex報錯Object(...)is not a function問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02
vue實現(xiàn)動態(tài)顯示與隱藏底部導航的方法分析
這篇文章主要介紹了vue實現(xiàn)動態(tài)顯示與隱藏底部導航的方法,結合實例形式分析了vue.js針對導航隱藏與顯示的路由配置、事件監(jiān)聽等相關操作技巧,需要的朋友可以參考下2019-02-02
vue 中 beforeRouteEnter 死循環(huán)的問題
這篇文章主要介紹了vue beforeRouteEnter 死循環(huán)的問題,在文章末尾給大家補充介紹了vue中beforeRouteEnter使用的誤區(qū),需要的朋友可以參考下2019-04-04

