Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ronaldo_rjr

objeto javascript acessado somente dentro de eventos

Recommended Posts

Boa tarde a todos,

 

Sou novo em desenvolvimento com javascript e jquery e gostaria de saber se poderiam me ajudar com uma questão:

 

criei em um arquivo separado, um script javascript com um objeto utilizando o pattern strategy para instanciar um objeto de acordo com o parametro passado ao construtor.

 

algo como:

 

//inicio

 

Alerta = function(tipo) {
this.tipo = tipo;
if (this.alertas[tipo]) {
this.alerta = this.alertas[tipo]
} else {
this.alerta = this.alertas.default
}
}

Alerta.prototype.alertas = {
default: function(input) {
...
},
info: function(input) {
...
},
vazio: function(input) {
...
},
confirmar: function(input){
...
}
}

Alerta.prototype.estrutura = function (input) {
...
}

Alerta.prototype.action = function(input) {
this.alerta(input)
}

info = new Alerta('info');

//fim

 

depois, chamo ele assim

 

$(document).ready(function () {

$.getScript( 'script.js');

});

 

 

mas eu não consigo usar ele diretamente assim:

 

$(document).ready(function () {

$.getScript( 'script.js');

info.action("exemplo");

});

 

 

mas se eu usar ele dentro de um evento ele funciona, exemplo:

 

$(document).ready(function () {

$.getScript( 'script.js');

$('.botaoqualquer').click(function(){

info.action("exemplo");

});

});

 

 

o que eu entendo é que deve ter alguma a coisa ver com escopo, mas não consegui resolver, alguém pode me ajudar com isso?

 

 

abraços,

 

Ronaldo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O objeto Alerta está dentro do arquivo script.js ?

 

se for isso que falei, não é escopo, é a concorrência assíncrona.

Você precisa esperar que o getScript termine, para só depois usar o conteúdo do script, entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado William, é isso mesmo que você entendeu.

 

Eu nunca tinha ouvido falar de concorrência assíncrona, como disse sou bem novo nisso. Você conhece algum material (português ou inglês) para indicar aonde eu possa estudar um pouco melhor?

 

eu usei o $.getScript porque não tinha conseguido inicializar o objeto importando o script entre as tags

<script type="text/javascript" src="script.js"></script>

 

se não for abusar muito (e se for poderia só me indicar alguns tutoriais para aprender melhor?) você poderia me ensinar a carregar esse script de forma que eu possa usar dentro da função

 

$(document).ready(function () {

});

o que eu vi na documentação jquery é que eu posso usar mais ou menos assim:

$(document).ready(function () {

jQuery.getScript("script.js")

.done(function() {
info.action("teste");

//e todo o resto do meu java script aqui
});

});

esse seria o jeito mais correto? você recomenda outro esquema?

Obrigado pela ajuda.

abraços,

Ronaldo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
    • Por Giovanird
      Olá a todos!
      Tenho uma pagina que possui uma DIV onde coloquei uma pagina PHP.
      Uso a função setInterval para atualizar a pagina inclusa dentro da DIV.
      O problema é que ao acessar o site , a DIV só me mostra a pagina inclusa somente quando completo o primeiro minuto.
      Preciso que a pagina inclusa já inicie carregada
       
      Meu código JavaScript e a DIV com a pagina PHP
       
      <script> function atualiza(){ var url = 'direita.php'; $.get(url, function(dataReturn) { $('#direita').html(dataReturn); }); } setInterval("atualiza()",60000); </script> <div> <span id="direita"></span> </div>  
    • Por Thiago Duarte
      Oi, gostaria de arrastar imagem e ao soltar formar bloco html, meu bloco de html ficaria com nome, content-1.html, content-2.html, etc
       
      Alguem pode me ajudar?
    • Por belann
      Olá!
       
      Estou fazendo o upload de arquivos com fetch dessa forma
      fetch(url, {
              method: 'POST',
              headers: {'Content-Type': 'multipart/form-data',},
              body: formData 
          }).catch((error) => (console.log("Problemas com o Upload"), error));
       
      estou usando input type=file
      e criando uma const formData = new FormData(); 
      mas não faz e não dá nenhum erro.
      estou fazendo o upload com a url="http://localhost/dashboard/dados".
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.