Attendu : une fois que j’appuie sur le bouton, les tags du sujet sont définis sur my-tag (fonctionne), ce qui déclenche un nouveau rendu du bouton et le désactive.
Attendu : une fois que j’ajoute le tag manuellement, le bouton est désactivé
Réalité : le nouveau rendu n’est déclenché dans aucun des scénarios.
Le bouton est correctement désactivé/activé lors du rafraîchissement de la page.
Avoir une propriété calculée dépendant de topic.tags entraînera son invalidation lorsque le tableau lui-même sera remplacé. Mais cela n’entraînera pas d’invalidation lorsque des éléments seront ajoutés/supprimés du tableau.
Je pense donc que vous voulez probablement topic.tags.@each (docs).
En général, nous essayons de nous éloigner des propriétés calculées et de nous rapprocher des getters natifs/autotracking. Je suppose que nous devrons moderniser l’API topic-footer-buttons à un moment donné pour prendre en charge cela
Cependant, l’utilisation de topic.tags.@each ne résout pas ce problème… (dans tous les cas, ni lorsque le tag est ajouté manuellement, ni lorsque le bouton est pressé).
Un console.log dans la fonction disabled() ne s’exécute pas. Il ne s’exécute pas non plus dans displayed().
J’ai aussi essayé this.topic.notifyPropertyChange(\"tags\");
Et je suis même allé désespérément jusqu’à essayer de manipuler d’autres propriétés (comme this.topic.title = this.topic.title + \"!\" et en incluant topic.title dans dependentKeys). Cela ne fonctionne pas non plus. L’utilisation de this.topic.set... ne fonctionne pas non plus.
Étonnamment, si je copie/colle votre exemple de l’OP et l’exécute localement, cela semble fonctionner parfaitement :
Y a-t-il d’autres thèmes/plugins qui pourraient interférer ? Ou peut-être quelque chose de différent dans votre code ‘réel’, par rapport à l’exemple minimal de l’OP ?
Mon code « minimal » dans le premier message est mon code « réel » pour le moment. Je vais le déplacer vers une installation complètement propre et voir si cela change quelque chose.
EDIT oui, cela fonctionne sur une installation propre
Je vais retirer ce sujet pour ne pas avoir à vivre avec cette honte
Je vous tiendrai au courant lorsque j’aurai trouvé la cause de ce problème.