Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

96
Visualizações
Cargando spinner en Vue.js desde FileInput

Tengo un problema que no puedo entender. Estoy usando Three.js en mi aplicación web y quiero agregar una rueda de carga cuando subo un archivo. Para eso, creé un componente con el indicador giratorio de carga y lo mostré con v-if cuando se carga el archivo.

Por extraño que parezca, esto no funciona, aunque el valor "cargando" es verdadero cuando se registra desde dentro de la función (cuando lo registro después de cargar el archivo, es falso nuevamente sin cambiarlo).

El código:

 <template> <div class="button-draw-container"> <input id="file-input" name="button-upload" type="file" @click="importFile"/> </div> <div v-if="loading" id="wrapper-loader"> <Loader/> </div> </template> <script> export default { components: { Loader }, data() { return { loading: false, } }, methods: { importFile() { var fileInput = document.querySelector("#file-input"); var cores = []; var outline; fileInput.addEventListener("change", function(event) { //This is the part that's not working this.loading = true; console.log(this.loading) const reader = new FileReader(); reader.addEventListener("load", function(event) { const contents = event.target.result; const loader = new Rhino3dmLoader(); loader.setLibraryPath( 'https://cdn.jsdelivr.net/npm/three@0.138.2/examples/jsm/libs/rhino3dm/' ); loader.parse( contents, function( object ) { for (let i = 0; i < object.children.length; i++) { if(object.children[i].userData.attributes.layerIndex == 1) { cores.push(object.children[i].geometry); } else if(object.children[i].userData.attributes.layerIndex == 2) { outline = object.children[i].geometry; } } } ); }); reader.readAsArrayBuffer( this.files[0] ); }) }, } </script>
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

El problema era que el alcance de "esto" está dentro del bloque de funciones, lo que significa que ya no es una referencia a la instancia de Vue.

Usando una función de flecha que no tiene alcance léxico y cambiando la última línea a reader.readAsArrayBuffer( fileInput.files[0] ); hizo el trabajo

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda