как получить параметры строки запроса в компоненте молниеносной системы продаж - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь получить параметры строки запроса URL-адреса с текущей страницы, и у меня есть следующий код:

doInit: function (component, event, helper) {
    var urlParams = new URLSearchParams(window.location.search);
    console.log("params::: ", urlParams);
    if (urlParams.has("openSidebar") && urlParams.get("openSidebar") == true) {
      console.log("redirection happening....");

      component.set("v.showFeed", true);
      component.set("v.isSidebarOpen", true);
    }
  },

по некоторым причинам кажется, что я не могу использовать эту строку var urlParams = new URLSearchParams(window.location.search); и я не знаю почему.

Есть ли какой-либо альтернативный или коммерческий способ получения двух параметров строки запроса из URL?

Я в основном получаюничего, выполнение, кажется, останавливается на той строке, где я использую URLSearchParams !

Также любопытно узнать, почему молния не позволяет выполнять простой javascript в этом случае?

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

Использование new URLSearchParams вернет экземпляр класса, а не объекта (или карты).

Этот код можно использовать для преобразования значений ключа / пары в объект.Тогда вы можете проверить значение объекта:

const searchParams = new URLSearchParams('?openSidebar=true&foo=bar&test=hello%26world')
const params = [...searchParams.entries()].reduce((a, [k, v]) => (a[k] = v, a), {})
console.log(params)


if (params.openSidebar === 'true') {
  console.log("redirection happening....");
  // do stuff here      
}

Обратите внимание, мы используем === 'true', поскольку параметр url всегда будет типом строки.

Поскольку вы сказали этоне работал, вы можете создать свой собственный парсер:

const qs = '?openSidebar=true&foo=bar&test=hello%26world'
  .slice(1) // remove '?'

const d = decodeURIComponent // used to make it shorter, replace d with decodeURIComponent if you want
const params = qs
  .split('&') // split string into key/pair
  .map(s => s.split('=')) // split key/pair to key and pair
  .reduce((a, [k, v]) => ((a[d(k)] = d(v)), a), {}) // set each object prop name to k, and value to v

console.log(params)

Обратите внимание, мы используем decodeURIComponent() (или сокращенно d()) last , поскольку параметры могут содержать символы амперсанда или знаки равенства.Если бы мы сначала позвонили d(), мы бы разбили эти символы, чего мы не хотим.

0 голосов
/ 26 сентября 2019

URLSearchParams () также не работал в моем браузере, но я разработал вспомогательную функцию, которая выполняет работу.

function getURLSearchParameters() {
  const urlSearchParameters = {};
  let searchParameters = decodeURIComponent(window.location.search);
  if (searchParameters !== '') {
    searchParameters = searchParameters.substring(1).split('&'); // get ride of '?'
    for (let i = 0; i < searchParameters.length; i++) {
      [key, value] = searchParameters[i].split('=');
      urlSearchParameters[key] = value;
    }
  }
  return urlSearchParameters;
}

К сожалению, я не могу ответить на другие ваши вопросы, потому что у меня нет опыта работы с salesforce

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...