簡體   English   中英

Framework 7 + Vue 3 智能 select 動態顯示 select 選項

[英]Framework 7 + Vue 3 smart select display dynamically select option

我嘗試顯示智能 select 的選項但沒有成功。我用 axios 恢復了選項,我做了一個 v-for 來顯示選項但沒有成功。 我首先將 function 允許我在計算的鈎子中檢索數據但沒有成功,然后我將它放在已安裝的鈎子中並且我使用了智能 select 的 setvalue 屬性也沒有成功。 歡迎任何幫助,我提前感謝你。

methods: {
 async getTokensLists() {
  const self = this;
  let url = f7.store.getters.getApiUrl.value + "tokens/";

  await self
    .axios({
      url,
      method: "get",
      withCredentials: false,
    })
    .then((response) => {
      if (response.satus == 200) {
        self.tokensList == response.data.data;
      }
    })
    .catch((error) => {
      console.log(error);
    });
 },
},
async created() {
 const self = this;
 // Error:  Uncaught Error: Smart Select requires initialized View
 self.getTokensLists();
},
computed: {
 /*case 1
 Error items readonly
 code: 
 items () {
 return this.tokensList
 }*/
},
mounted(){
 /*case 2
 Error: new data not display in front
 code:
 this.$nextTick(() => {
  this.$refs.item.f7SmartSelect.setValue(['test']);
 });*/
}

這是模板部分

 <f7-list-item
        title="Add tokens"
        smart-select
        :smart-select-params="{
          openIn: 'popup',
          searchbar: true,
          searchbarPlaceholder: 'Search token',
          pageTitle: 'Add tokens',
        }"
        @smartselect:closed="updateSelectedtokensData"
      >
        <select v-model="tokensList" name="select-token" multiple>
          <optgroup label="">
            <option
              v-for="(item, key) in tokensList"
              :key="key"
              :value="item.symbol"
            >
              {{ item.name + " (" + item.symbol + ")" }}
            </option>
          </optgroup>
        </select>
        <template #media>
          <f7-icon
            ios="f7:plus_circle"
            aurora="f7:plus_circle"
            md="material:add_circle_outline"
            size="30"
          ></f7-icon>
        </template>
    </f7-list-item>

為了加載異步數據,我使用了視圖 3 的設置方法和 Suspense 組件

雷達組件

...
async setup(){
  const tokensList = ref(null)

  await axios({
    url: f7.store.getters.getApiUrl.value+"tokens/",
    method: "get",
    withCredentials: false,
  }).then(response =>{
    if (response.status == 200) {
      
      tokensList.value =  response.data.data;
    }
  }).catch(error =>{
    console.log(error)
  })
return {
  tokensList
};
}...

應用程序.vue

<!-- Radar View -->

  <f7-view
    id="view-radar"
    :class="{ 'web-view': isDesktop }"
    name="Radar"
    tab
    :router="false"
  >
    <Suspense>
      <template #default>
        <radar></radar>
      </template>
      <template #fallback>
        <f7-page name="radar">
          <!-- Top Navbar -->
          <f7-navbar title="Radar">
            <f7-nav-right>
              <f7-link
                icon-ios="f7:funnel_fill"
                icon-aurora="f7:funnel_fill"
                icon-md="material:filter_alt"
                popup-open=".filter-popup"
              ></f7-link>
            </f7-nav-right>
          </f7-navbar>

          <f7-block class="text-align-center" style="margin-top: 20%;"
            ><f7-preloader color="multi" :size="42"></f7-preloader
          ></f7-block>
        </f7-page>
      </template>
    </Suspense>
  </f7-view>
  ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM