Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gracias. Un pequeño aporte: #4

Open
Joselon opened this issue Jul 3, 2020 · 3 comments
Open

Gracias. Un pequeño aporte: #4

Joselon opened this issue Jul 3, 2020 · 3 comments

Comments

@Joselon
Copy link

Joselon commented Jul 3, 2020

Buenas!
Lo primero agradecer los tutoriales de ionic. Estoy aprendiendo rápidamente gracias a ellos.

Me gustaría compartir mi pequeña aportación al mini juego. Cuando cambias el número (debido al binding) la frase de respuesta queda con la última comprobación "mayorMenor" pero con un nuevo número y puede llevar al jugador a despiste.
Se me ha ocurrido hacer esta frase invisible ante un cambio en el número hasta que se pulse el botón adivinar de la siguiente manera:
En la vista:
<ion-input type="number" min="1" max="100" [(ngModel)]="num" placeholder="Introduce un número del 1 al 100" onchange="document.getElementById('respuesta').style.visibility = 'hidden';">

<p id="respuesta">El número secreto es {{mayorMenor}} {{num}}</p>

En el controlador:
compruebaNumero(){
document.getElementById('respuesta').style.visibility = 'visible';
if(this.num)
..

Seguramente se pueda hacer con Angular mucho más sencillo, pero de momento se me ocurre esto.

@edurevilla
Copy link
Owner

Hola Joselon, gracias por el aporte.

Es una buena idea, pero no es muy recomendable alterar directamente a las propiedades del dom mediante javascript, ya que puede interferir con eventos de Angular y causar resultados inesperados, como estamos utilizando Angular es mejor utilizar los recursos que ofrece angular para tal efecto.

Una solución utilizando Angular sería utilizar una variable que podemos llamar showTexto que inicializamos a false:
...
export class HomePage {

num: number;
mayorMenor = '...';
numSecret: number = this.numAleatorio(0,100);
showTexto = false;
...

Y despues en la plantilla utilizar *ngIf para mostrar el texto:
<p *ngIf="showTexto">El número secreto es {{ mayorMenor }} {{ num }}

En la función compruebaNumero le diremos que showTexto valga true para que se muestre el texto:
compruebaNumero(){
if(this.num)
{
if(this.numSecret < this.num)
{
this.mayorMenor = 'menor que';
}
else if(this.numSecret > this.num)
{
this.mayorMenor = 'mayor que';
}
else{
this.mayorMenor = '';
}

  this.showTexto = true;
}

}

Luego podemos utilizar el evento ionInput para llamar a una función que ponga la variable showTexto a false cada vez que se introduzca un valor:

<ion-input (ionInput)="ocultaTexto()" type="number" min="1" max="100" [(ngModel)]="num" placeholder="Introduce un número del 1 al 100"></ion-input>

En el controlador tendremos la función ocultaTexto que simplemente pone showTexto a false:

ocultaTexto(){
this.showTexto = false;
}

Espero que te sirva de ayuda.

@Joselon
Copy link
Author

Joselon commented Jul 7, 2020 via email

@edurevilla
Copy link
Owner

Muchas gracias por contestar: Aquí iré dejando mis avances con tus tutoriales. He puesto un enlace a reviblog y he compartido la apk, con contador de intentos. Muchas gracias de nuevo! https://joselon79.neocities.org/ https://joselon79.neocities.org/

El 7 jul 2020, a las 11:34, edurevilla @.***> escribió: Hola Joselon, gracias por el aporte. Es una buena idea, pero no es muy recomendable alterar directamente a las propiedades del dom mediante javascript, ya que puede interferir con eventos de Angular y causar resultados inesperados, como estamos utilizando Angular es mejor utilizar los recursos que ofrece angular para tal efecto. Una solución utilizando Angular sería utilizar una variable que podemos llamar showTexto que inicializamos a false: ... export class HomePage { num: number; mayorMenor = '...'; numSecret: number = this.numAleatorio(0,100); showTexto = false; ... Y despues en la plantilla utilizar *ngIf para mostrar el texto: <p *ngIf="showTexto">El número secreto es {{ mayorMenor }} {{ num }} En la función compruebaNumero le diremos que showTexto valga true para que se muestre el texto: compruebaNumero(){ if(this.num) { if(this.numSecret < this.num) { this.mayorMenor = 'menor que'; } else if(this.numSecret > this.num) { this.mayorMenor = 'mayor que'; } else{ this.mayorMenor = ''; } this.showTexto = true; } } Luego podemos utilizar el evento ionInput para llamar a una función que ponga la variable showTexto a false cada vez que se introduzca un valor: <ion-input (ionInput)="ocultaTexto()" type="number" min="1" max="100" [(ngModel)]="num" placeholder="Introduce un número del 1 al 100"> En el controlador tendremos la función ocultaTexto que simplemente pone showTexto a false: ocultaTexto(){ this.showTexto = false; } Espero que te sirva de ayuda. — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub <#4 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AC7WEHZONMHJHQZ6C4LWIPLR2L23BANCNFSM4OP3SZBA.

Gracias Joselon, he instalado el apk y está muy bien, los comentarios al pulsar en "Resultados de la prueba" le dan originalidad :)
He visitado tu web y tienes proyectos interesantes.

Un saludo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants