Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript Vue$route.query保留某种缓存,需要停止它_Typescript_Vue.js_Vuejs2_Vue Router - Fatal编程技术网

Typescript Vue$route.query保留某种缓存,需要停止它

Typescript Vue$route.query保留某种缓存,需要停止它,typescript,vue.js,vuejs2,vue-router,Typescript,Vue.js,Vuejs2,Vue Router,我有一个使用VueJS CLI和Typescript运行的应用程序,在仪表板中,我有几个项目需要单击以过滤仪表板中的项目 因此,在我的模板(使用帕格)中,我有,例如 li.status-list__item router-link( :to="responsiblePartyLocation('followUpStatusComplete')") .

我有一个使用VueJS CLI和Typescript运行的应用程序,在仪表板中,我有几个项目需要单击以过滤仪表板中的项目

因此,在我的模板(使用帕格)中,我有,例如

li.status-list__item
                    router-link(
                      :to="responsiblePartyLocation('followUpStatusComplete')")
                      .status-list__item-val {{ responsiblePartySummary.completeFollowUps }}
                        .status-list__item-percentage {{ responsiblePartySummary.completeFollowUpsPercentage }}%
                      .status-list__item-description Complete
单击该按钮,它将调用以下命令:

getFilterOption(
  selectedOption: string,
  query: Dictionary<string | (string | null)[]>,
): Record<string, string> {
  const filterOption = responsiblePartyQueryFilterOptions[selectedOption];

  if (selectedOption.includes('Status') && query.problemStatus !== undefined) {
    const selectedProblemStatus = filterOption.problemStatus;

    if (
      !query.problemStatus.includes(selectedProblemStatus) &&
      selectedProblemStatus !== undefined
    ) {
      filterOption.problemStatus = `${query.problemStatus},${selectedProblemStatus}`;
      filterOption.problemStatus = this.removeDuplicates(filterOption.problemStatus);
    }
  }

  return filterOption;
}

responsiblePartyLocation(selectedOption: string): Location {
  const { query } = this.$route;

  const filterOption = this.getFilterOption(selectedOption, query);

  return {
    name: 'responsible-party',
    query: { ...query, ...filterOption },
  };
}
以上所有功能都很好,但有一个bug我无法解决

处理方法如下:filterType“problemStatus”与其他类型不同,它只覆盖了前面的过滤器,可以同时具有多个值

下面是bug场景:

  • 我添加了“草稿”过滤器,它使查询具有
    problemStatus=draft
  • 我删除“草稿”过滤器,它将从中删除problemStatus=Draft 询问
  • 我添加了“RCA”过滤器,下面是bug,现在查询已经完成 problemStatus=草稿,rca
  • 它可以再次复制,比如删除上面的一个或全部,并添加其他problemStatus筛选器,将添加所有已删除的问题,并添加新的问题。 Vue$route.query中似乎存在某种缓存,在添加新筛选器时,即使从查询中删除了该值,该缓存也会保留该值

    有人知道怎么修吗

    removeFromQuery(typeOfFilter: string, filterValue: string): void {
      const { query } = this.$route;
      const newQuery = Object.assign({}, query);
    
      if (query[typeOfFilter] !== undefined) {
        if (!query[typeOfFilter].includes(',')) {
          delete newQuery[typeOfFilter];
        } else {
          const filterArray = (query[typeOfFilter] as string).split(',');
          newQuery[typeOfFilter] = filterArray.filter((filter) => filter !== filterValue).join(',');
        }
      }
    
      if (JSON.stringify(this.$route.query) !== JSON.stringify(newQuery)) {
        this.$router.push({
          name: 'responsible-party',
          query: newQuery,
        });
      }
    }