搜尋

首頁  >  問答  >  主體

在Vue Router中為可選URL參數設定預設值,同時具有獨立的可選URL參數。

<p>我有以下路由</p> <pre class="brush:php;toolbar:false;">export const personRoutes: RouteRecordRaw[] = [ { path: '/person/:id?/:handedSlug?', name: 'Person', component: () => import('./view/person'), }, ];</pre> <p>我有一個方法,接受篩選條件並更新路由:</p> <pre class="brush:php;toolbar:false;">updateRoute(): void { const filters = this.filters; const router = this.$router; router.push({ name: 'Person', params: { id: filters.getId(), handedSlug: filters.handedSlug(), }, }); },</pre> <p>我遇到的問題是,如果id為null,而handed被設定了,回傳的URL是:person/handedValue,而我需要的是person/all/handedValue。 <br /><br />如果URL中後面的參數被設定了,如何為可選參數設定預設值呢? </p><p><br /></p>
P粉377412096P粉377412096482 天前563

全部回覆(1)我來回復

  • P粉785905797

    P粉7859057972023-08-04 12:52:00

    我認為目前沒有這種方式,但如果有的話,它不能被視為可選項。我建議如果filters.getId()為空,只需簡單地傳入字串'all'。

    updateRoute(): void {
      const filters = this.filters;
      const router = this.$router;
    
      let routeId = filters.getId()
      if (!routeId && filters.handedSlug()) {
        routeId = 'all'
      }
    
      router.push({
        name: 'Person',
        params: {
          id: routeId,
          handedSlug: filters.handedSlug(),
        },
      });
    }, 

    回覆
    0
  • 取消回覆