Voici l’ancien modèle que j’essaie d’éliminer et de déplacer vers un composant Glimmer
{{#if model.showLocationControls}}
{{add-location-controls
location=buffered.location
categoryId=buffered.category.id
}}
{{/if}}
Plus bas, il y a simplement un this.set("location", location); qui semble présenter une liaison bidirectionnelle.
Cela fonctionne bien.
Accéder au buffer avec buffered fournit la connectivité nécessaire pour remonter les changements de localisation.
Le défi survient lors de l’utilisation d’un composant Glimmer de remplacement :
export default class EditLocationDetails extends Component {
@action
updateLocation(location) {
this.args.outletArgs.buffered.location = location;
}
<template>
{{#if this.args.outletArgs.model.showLocationControls}}
<AddLocationControls
@location={{this.args.outletArgs.buffered.location}}
@category={{this.args.outletArgs.buffered.category}}
@updateLocation={{this.updateLocation}}
/>
{{/if}}
</template>
}
Maintenant, l’attribut peut être mis à jour, mais il ne reste pas, probablement parce que c’est un argument Glimmer de type “data down”.
Qu’est-ce qui me manque ?
Existe-t-il une action à laquelle je peux accéder qui me permet de remonter le changement ?