Continuando la discussione da Discourse toolkit per il rendering dei moduli![]()
Vorrei che il mio pulsante di salvataggio fosse disponibile solo quando c’è qualcosa da salvare.
Cercando isDirty in all-the-plugins non trova nulla. L’unico posto in cui lo vedo nel core è nel toolkit.
Sicuramente c’è un modo per vedere se un pulsante di salvataggio dovrebbe essere attivo.
Ho questo:
export default class ServerCreate extends Component {
@tracked formApi = null;
@tracked isDirty = false;
@action
registerAPI(api) {
console.log("registerAPI called", api);
this.formApi = api;
// api.onChange(() => {
// console.log("onChange!", api.isDirty);
// this.isDirty = api.isDirty;
// });
}
get submitDisabled() {
// formApi potrebbe essere undefined finché il modulo non si registra
console.log("submitDisabled", this);
return !this.formApi?.isDirty;
}
....
<Form
@data={{this.formData}}
@onRegisterApi={{this.registerAPI}}
@onSubmit={{this.handleSubmit}}
as |form|
>
e questo (ho provato un po’ di cose):
<form.Submit
@label="pfaffmanager.server.save_button"
class="save"
@icon="check"
@disabled={{this.registerAPI.isDirty}}
/>
Non sono riuscito a capire come vedere se i dati sono cambiati per sapere se salvarli. Non capisco perché non riesco a trovare un esempio di questo. Ho provato un po’ di cose che sembrano l’esempio nella documentazione, ma nessuna di esse ha funzionato.
Ho provato a guardare le pagine delle impostazioni di amministrazione, che so che mostrano un pulsante di salvataggio solo se i dati vengono modificati, ma sembra che non utilizzino il forms toolkit.
Vedo che la mia funzione registerAPI(api) viene chiamata, ma non vedo isDirty in essa:
Poi, quando lo registro, sembra che sia solo testo?
Naturalmente isDirty è quando voglio che il pulsante sia abilitato, non disabilitato, ma altri esempi che ho ottenuto (probabilmente da ask.discourse.com) mi hanno detto di fare qualcosa come @disabled={{not this.isDirty}} e non esiste una cosa come not, quindi per ora sarei felice se funzionasse al contrario.

