Jak możemy zaimplementować akcje na żywo w Ember bez przeładowywania lub naciskania przycisku akcji?

Na przykład, jeśli wypełniam formularz, aby zmienić hasło, przy wprowadzaniu hasła potwierdzam, muszę sprawdzić dopasowanie tych dwóch haseł na żywo (bez naciskania żadnego przycisku) To tylko przypadek? jak mogę to zaimplementować?

0
Sreenath P 12 listopad 2018, 17:30

1 odpowiedź

Najlepsza odpowiedź

Zobacz twiddle lub Gist. Istnieje wiele różnych podejść.

1). Powiąż akcję ze zdarzeniem oninput dwóch pól wejściowych

<input value={{password2}} oninput={{action 'setPassword2' value="target.value"}} />
<input value={{passwordConfirm2}} oninput={{action 'setPasswordConfirm2' value="target.value"}} />

Z niestandardowymi procedurami obsługi akcji, które wywołują funkcję na wejściu:

actions: {
  setPassword2(val){
    this.set('password2', val);
    this.updatePasswordsMatch2();
  },
  setPasswordConfirm2(val){
    this.set('passwordConfirm2', val);
    this.updatePasswordsMatch2();
  }
},
updatePasswordsMatch2(){
  this.set('passwordsMatch2', this.get('password2') === this.get('passwordConfirm2'));   
}

2). Tak samo jak powyżej, ale użyj onchange, jeśli chcesz, aby zdarzenie uruchamiało się tylko po rozmyciu + zmianie

3). Wiązanie dwukierunkowe (old school ember way) z wyliczonymi właściwościami z zachowaniem zarówno hasła jak i potwierdzenia:

passwordsMatch: computed('password', 'passwordConfirm', function(){
   return this.get('password') === this.get('passwordConfirm'); 
})
2
mistahenry 12 listopad 2018, 18:38