2016-03-03 4 views
2

J'ai injecté une erreur de liaison stupide dans un grand projet hérité et j'ai du mal à le trouver.
C'est la sortie d'erreur à la console:Mise en garde de Flash Builder (d'une erreur de liaison)?

avertissement: incapable de se lier à la propriété « longueur » de la classe « String » (classe est pas un IEventDispatcher)

J'ai essayé En passant par le débogueur, vous essayez de trouver où cela se passe, mais il y a plusieurs milliers de lignes de code et avec la messagerie événementielle, une exécution de programme très non linéaire.

Question: Existe-t-il un moyen pour que Flash Builder casse un avertissement comme celui-ci? Si ce n'est pas le cas, y a-t-il une autre méthode, une astuce ou un hack pour suivre cela?

+0

Montrez le code. Essayez de nettoyer le projet Ou redémarrez Flash Builder si aucune erreur auparavant. – ketan

+0

l'avertissement n'est pas pertinent pourquoi devez-vous l'enlever? – BotMaster

+0

Les avertissements ne sont pas des erreurs, les avertissements dans un projet ne sont pas si importants et, dans la plupart des cas, n'ont aucun impact sur le projet lui-même. Si cela vous causait des problèmes, vous sauriez où se trouvent les problèmes et où chercher, mais puisque vous ne le faites pas, je suppose que vous voulez seulement vous en débarrasser parce que cela vous dérange de le voir dans le panneau de sortie, J'ai raison? – BotMaster

Répondre

2

Cela est causé par (attendez ...) en essayant de lier à une propriété qui n'est pas marquée comme [Bindable]. Dans ce cas, vous disposez d'une variable chaîne dont la propriété length est utilisée pour la liaison de données.

Ceci est probablement causé par l'ajout « myvar.length » comme une propriété dans la balise MXML pour un composant - quelque chose comme

<s:TextInput maxChars="{myInputString.length}" ...>

Flex va créer la liaison de données pour vous automatiquement, mais il ne se rend pas compte au moment de l'exécution que la propriété n'est pas Bindable - ce qui signifie que si la valeur de la propriété est modifiée, la notification ne sera pas propagée pour mettre à jour les écouteurs.

La liaison de données utilise mx.binding.PropertyWatcher pour effectuer la liaison et PropertyWatcher.updateParent est l'emplacement où l'avertissement est généré.

+0

La cause est connue et n'est pas sorcière, il veut savoir comment le trouver facilement parmi un tas de fichiers. – BotMaster

+1

Oui, c'est pourquoi je suggère un point d'arrêt dans PropertyWatcher.updateParent - qui inclut l'objet dont on se plaint ... –