欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue3.0 加載json的方法(非ajax)

 更新時(shí)間:2020年10月26日 11:11:53   作者:金色海洋  
這篇文章主要介紹了vue3.0 加載json的方法(非ajax),幫助大家更好的理解和學(xué)習(xí)vue,感興趣的朋友可以了解下

問題

加載json一定要用ajax的方式嗎?

最近學(xué)習(xí)vue3.0,在實(shí)現(xiàn)一個(gè)功能的時(shí)候發(fā)現(xiàn)一個(gè)問題——
寫代碼的時(shí)候,需要的json太長(zhǎng)、太多,和代碼放在一起太混亂??创a總有翻來翻去,又沒有“折疊”功能。
那么能不能把json放在一個(gè)單獨(dú)的文件里面保存,然后在加載進(jìn)來呢?

查了半天的資料,發(fā)現(xiàn)那叫一個(gè)折騰呀,各種各樣的配置不說,最后還需要用ajax的方式來加載。這個(gè),這么簡(jiǎn)單的事情為啥要這么折騰?

你看引用組件是不是很方便?一行代碼就搞定了。就像下面這樣:

import nfInput from '@/components/nf-form-item.vue'

等等,組件??

思路

上面提到了組件,那么能不能把json放在組件里面保存,然后“頁面”里加載組件獲取組件里面的json呢?各種嘗試之后發(fā)現(xiàn)是可以的,涉及幾個(gè)關(guān)鍵字:

組件、屬性、data、生命周期、$emit、watch

  1. 先定義一個(gè)組件,設(shè)置一個(gè)屬性,這個(gè)屬性不是接收數(shù)據(jù)的,而是返回json的一個(gè)橋梁。
  2. 然后在組件的data里面定義需要的json。
  3. 在組件的 created 事件里面通過 $emit 向父級(jí)提交data(json)數(shù)據(jù)
  4. 由于是setup先執(zhí)行,組件的created后執(zhí)行,所以需要在setup里面設(shè)置watch監(jiān)聽屬性的變化,得到需要的json后賦值給需要的對(duì)象。

當(dāng)然,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: '請(qǐng)輸入',
    readonly: false
   }
  }
 },
 created: function () {
  this.$emit('update:modelValue', this.json) // 返回給調(diào)用者,vue3.0的改變的地方
 }
}
</script>

.vue文件

<template>
 <nfJosn v-model="title" /> <!--就是那個(gè)傳說中的組件,使用v-model 傳遞數(shù)據(jù)-->
</template>

<script>
import { ref, watch } from 'vue' // 需要watch進(jìn)行監(jiān)聽
import nfJosn from '@/components/nf-getjson.vue' // 加載組件

export default {
 name: 'FormHelp',
 components: {
  nfHelp
 },
 setup () {
  const value = ref('') // 定義一個(gè)屬性
  const json = ref({}) // 接收返回的json
  // 監(jiān)聽屬性變化
  watch(() => value.value, json => {
   json.value = json
  })

  return {
   value,
   json
  }
 }
}
</script>

基本就是這樣,不需要加事件。

小結(jié)

以上代碼在vue3.0 beta版里測(cè)試通過。
也不知道有沒有人用過這種方式,也不知道這種方式是否符合vue的規(guī)范,總之先這么用著,不行再改。

以上就是vue3.0 加載json的方法(非ajax)的詳細(xì)內(nèi)容,更多關(guān)于vue3.0 加載json的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue生成初始化名字相近的變量并放到數(shù)組中的示例代碼

    vue生成初始化名字相近的變量并放到數(shù)組中的示例代碼

    項(xiàng)目上有一個(gè)需求,頁面上有50、60個(gè)數(shù)據(jù)變量,是依次排序遞增的變量,中間有個(gè)別變量用不到,不想把這些變量直接定義在data() { }內(nèi),這篇文章主要介紹了vue生成初始化名字相近的變量并放到數(shù)組中的示例代碼,需要的朋友可以參考下
    2024-08-08
  • vue 解決uglifyjs-webpack-plugin打包出現(xiàn)報(bào)錯(cuò)的問題

    vue 解決uglifyjs-webpack-plugin打包出現(xiàn)報(bào)錯(cuò)的問題

    這篇文章主要介紹了vue 解決uglifyjs-webpack-plugin打包出現(xiàn)報(bào)錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 在Vue中進(jìn)行數(shù)據(jù)分頁的實(shí)現(xiàn)方法

    在Vue中進(jìn)行數(shù)據(jù)分頁的實(shí)現(xiàn)方法

    在前端開發(fā)中,數(shù)據(jù)分頁是一個(gè)常見的需求,特別是當(dāng)處理大量數(shù)據(jù)時(shí),Vue作為一款流行的JavaScript框架,提供了強(qiáng)大的工具和生態(tài)系統(tǒng)來實(shí)現(xiàn)數(shù)據(jù)分頁,本文將介紹如何在Vue中進(jìn)行數(shù)據(jù)分頁,以及如何設(shè)計(jì)一個(gè)通用的分頁組件,需要的朋友可以參考下
    2023-10-10
  • vue開發(fā)自定義的全局公共組件詳解

    vue開發(fā)自定義的全局公共組件詳解

    本文介紹了如何開發(fā)自定義全局公共組件的兩種方法,第一種方法是通過在components文件夾中創(chuàng)建新的組件文件夾,例如Loading文件夾,并在其中創(chuàng)建index.js和index.vue文件,通過在vue的入口文件main.js中進(jìn)行引入,可以實(shí)現(xiàn)組件的全局調(diào)用
    2024-10-10
  • vue 百度地圖(vue-baidu-map)繪制方向箭頭折線實(shí)例代碼詳解

    vue 百度地圖(vue-baidu-map)繪制方向箭頭折線實(shí)例代碼詳解

    這篇文章主要介紹了vue 百度地圖(vue-baidu-map)繪制方向箭頭折線,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Vue密碼登陸加密RSA實(shí)現(xiàn)方案

    Vue密碼登陸加密RSA實(shí)現(xiàn)方案

    這篇文章主要介紹了Vue密碼登陸加密RSA實(shí)現(xiàn)方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 詳解Vue 非父子組件通信方法(非Vuex)

    詳解Vue 非父子組件通信方法(非Vuex)

    本篇文章主要介紹了詳解Vue 非父子組件通信方法(非Vuex),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • Vue實(shí)現(xiàn)彈出框點(diǎn)擊空白頁彈框消失效果

    Vue實(shí)現(xiàn)彈出框點(diǎn)擊空白頁彈框消失效果

    這篇文章主要介紹了VUE實(shí)現(xiàn)彈出框點(diǎn)擊空白頁彈框消失,實(shí)現(xiàn)方法可以在Vue中實(shí)現(xiàn)彈出框然后通過點(diǎn)擊空白頁面來讓彈窗隱藏,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • vue實(shí)現(xiàn)flv格式視頻播放效果

    vue實(shí)現(xiàn)flv格式視頻播放效果

    這篇文章主要介紹了vue實(shí)現(xiàn)flv格式視頻播放,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Vue使用el-table實(shí)現(xiàn)表格跨頁多選

    Vue使用el-table實(shí)現(xiàn)表格跨頁多選

    在我們?nèi)粘m?xiàng)目開發(fā)中,經(jīng)常會(huì)有表格跨頁多選的需求,接下來讓我們用?el-table示例一步步來實(shí)現(xiàn)這個(gè)需求,文中有詳細(xì)的代碼講解,對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-08-08

最新評(píng)論