iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0
SideProject30

Nuxt3的初心者之旅:淬鍊出屬於自己的金融投資儀表板系列 第 11

DAY11 - 買一送十 - 股票搜尋功能、預先輸入、Nuxt3動態路由股票頁(1)

  • 分享至 

  • xImage
  •  

今日工事

預先輸入框的股票搜尋

使用套件

vue3-simple-typeahead

先安裝

npm install vue3-simple-typeahead


import SimpleTypeahead from 'vue3-simple-typeahead';
app.use(SimpleTypeahead);
// index.vue

<ClientOnly>
  <vue3-simple-typeahead
    id="typeahead_id"
    placeholder="搜尋股票..."
    class="w-[300px] m-4 p-1 bg-white rounded shadow :active:border-white"
    :items="checkData"
    v-model="searchStock"
    :minInputLength="1"
    @selectItem="selectItemEventHandler"
    @onBlur="onBlurEventHandler"
  >
    <template #list-item-text="slot"
      ><span
        class="inline-block w-[300px] bg-white rounded shadow ms-4 mb-1"
        v-html="slot.boldMatchText(slot.itemProjection(slot.item))"
      ></span
    ></template>
  </vue3-simple-typeahead>
</ClientOnly>


const checkData = ref([])
const searchStock = ref('')
const searchApi = computed(()=>{return `https://financialmodelingprep.com/api/v3/search?query=${searchStock.value}&limit=10&exchange=NASDAQ&apikey=${fmp}`})

const onFocusEventHandler = (event) => {
  console.log(event.input)
}

const onBlurEventHandler = (event) => {
    axios.get(searchApi.value)
    .then((res)=>{
      checkData.value = res.data.map((v)=>v.symbol)
    })
    .catch((err)=>{
      console.log(err)
    })
}

這個套件一樣只有在client side渲染
所以外層要加一個<ClientOnly>包起來
搜尋框如下圖
https://ithelp.ithome.com.tw/upload/images/20230926/20162573rCSLTQcs7Z.png

@onBlur="onBlurEventHandler"
在輸入框失去焦點的時候會觸發onBlurEventHandler
會呼叫搜尋股票的api並回傳相關的股票名稱到checkData

:items="checkData":item會接收一組陣列
輸入的字會跟陣列做比對
有一樣的會顯示預先輸入框如下圖
https://ithelp.ithome.com.tw/upload/images/20230926/20162573n7siwuX3Gg.png

小結:

每次先幫明天訂目標好像都會立flag
又差點要壓線啦

明天把剩餘細節跟換頁的router補上!


上一篇
DAY10 - 名次就是HighLight - 做出即時的當日漲跌幅及活躍股票排名
下一篇
DAY12 - 買一送十 - 股票搜尋功能、預先輸入、Nuxt3動態路由股票頁(2)
系列文
Nuxt3的初心者之旅:淬鍊出屬於自己的金融投資儀表板30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言