Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

192
Views
¿Hay alguna forma de detectar cambios en el almacenamiento local y volver a ejecutar el archivo de arranque o reasignar un valor en vuejs o javascript?

Tengo 3 dominios que los usuarios pueden elegir cuando inician sesión. Digamos que tengo dominios dev, demo y sandbox . Uso Axios en el que la instancia de dominio está configurada en el archivo Boot.js. El archivo de arranque solo se activa cuando la instancia de Vue aún no se activa. Aquí está el archivo de arranque:

 import { boot } from "quasar/wrappers"; import axios from "axios"; import { LocalStorage } from "quasar"; import { Platform } from "quasar"; let baseURL = LocalStorage.getItem("basepath"); let api = axios.create({ baseURL: baseURL }); export default boot(({ app }) => { // for use inside Vue files (Options API) through this.$axios and this.$api app.config.globalProperties.$axios = axios; // ^ ^ ^ this will allow you to use this.$axios (for Vue Options API form) // so you won't necessarily have to import axios in each vue file app.config.globalProperties.$api = api; // ^ ^ ^ this will allow you to use this.$api (for Vue Options API form) // so you can easily perform requests against your app's API }); export { axios, api };

Aquí está el fragmento de secuencia de comandos del archivo de inicio de sesión:

 <script> import { LocalStorage } from "quasar"; export default { data() { return { companyList: [{ id: "dev", site: "https://dev.mycompany.com", }, { id: "demo", site: "https://demo.mycompany.com", }, { id: "sandbox", site: "https://sandbox.mycompany.com", }, ], loginData: { username: "", password: "", companyid: "", }, }; }, methods: { checkCompanyId(payload) { let temp = this.companyList.find((o) => o.id == payload.toLowerCase()); if (temp) { LocalStorage.set("basepath", temp.site); // <-- Here is the setting of the basepath return true; } else { return false; } }, submitForm() { const CompanyId = this.checkCompanyId(this.loginData.companyid); if (CompanyId) { this.loginProcess(this.loginData); } else { console.log('Company ID can't be found!') } } }, } } </script>

El problema es que el almacenamiento local en realidad se cambia, pero la variable baseURL en el archivo Boot.js no se cambia a menos que vuelva a cargar la página. ¿Hay alguna forma de reasignar la variable baseURL cada vez que cambia el almacenamiento local?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Entonces, estoy bastante inspirado por las dos respuestas anteriores. Mi archivo de arranque no es un archivo vuex, no hay forma de que pueda realizar una acción. En cambio, hice una función que se puede llamar cuando se elige un sitio y lo exporté. Aquí está la función que implementé para cambiar la variable en mi archivo de arranque.

 let changeBasepath = (basepath) => { baseURL = basepath; api = axios.create({ baseURL: baseURL }); };

Mi archivo de arranque después del cambio se ve así:

 import { boot } from "quasar/wrappers"; import axios from "axios"; import { LocalStorage } from "quasar"; import { Platform } from "quasar"; let baseURL = LocalStorage.getItem("basepath"); let api = axios.create({ baseURL: baseURL }); let changeBasepath = (basepath) => { baseURL = basepath; api = axios.create({ baseURL: baseURL }); }; export default boot(({ app }) => { // for use inside Vue files (Options API) through this.$axios and this.$api app.config.globalProperties.$axios = axios; // ^ ^ ^ this will allow you to use this.$axios (for Vue Options API form) // so you won't necessarily have to import axios in each vue file app.config.globalProperties.$api = api; // ^ ^ ^ this will allow you to use this.$api (for Vue Options API form) // so you can easily perform requests against your app's API }); export { axios, api, changeBasepath };

Luego, importé el archivo de arranque e implementé la función. Aquí está el fragmento de secuencia de comandos de mi archivo vue después del cambio:

 <script> import { LocalStorage } from "quasar"; import { changeBasepath } from "boot/api"; // <-- IMPORT IT export default { data() { return { companyList: [{ id: "dev", site: "https://dev.mycompany.com", }, { id: "demo", site: "https://demo.mycompany.com", }, { id: "sandbox", site: "https://sandbox.mycompany.com", }, ], loginData: { username: "", password: "", companyid: "", }, }; }, methods: { checkCompanyId(payload) { let temp = this.companyList.find((o) => o.id == payload.toLowerCase()); if (temp) { LocalStorage.set("basepath", temp.site); // <-- Here is the setting of the basepath changeBasepath(temp.site); // <-- IMPLEMENT IT return true; } else { return false; } }, submitForm() { const CompanyId = this.checkCompanyId(this.loginData.companyid); if (CompanyId) { this.loginProcess(this.loginData); } else { console.log('Company ID can't be found!') } } }, } } </script>
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!