knockoutjs – liaisons avec des parameters déclenchés lors du chargement

J’ai fait beaucoup de knock-out ces derniers temps et je suis tombé sur un événement étrange.

Comme vous pouvez le voir dans ce violon http://jsfiddle.net/hqXjv/ lorsque vous définissez une liaison pour click: testMethod l’action se déclenche lorsque l’utilisateur clique sur le bouton.

Comme vous pouvez le voir dans ce violon http://jsfiddle.net/kxTzM/ lorsque vous configurez la liaison pour click: testMethod('hi') l’action se déclenche lorsque vous cliquez sur le bouton et sur le chargement de la page (je suppose appliquerBindings)

Avoir un paramètre n’est pas nécessaire pour reproduire le problème, si vous modifiez la liaison pour click: testMethod() dans le premier violon, vous voyez qu’il est déclenché lors du chargement de la page.

Bien que, oui, je puisse append un autre atsortingbut à l’élément et essayer de l’utiliser comme paramètre, ma question est la suivante: existe-t-il un moyen de transmettre des parameters aux liaisons knockoutjs sans les déclencher en charge. S’il s’agit d’un bug, soyez-le, mais je veux juste savoir comment l’éviter.

Je pense que “Note 2” sur cette page éliminatoire explique tout:

http://knockoutjs.com/documentation/click-binding.html

Vous pouvez éviter le problème en utilisant:

Fonctions anonymes:

  

… ou …

La méthode bind:

  

Le suivant a exécuté la fonction de clic sur le chargement

 click: clickSpan() 

en supprimant les crochets comme ci-dessous, la fonction n’a pas été exécutée onload

 click: clickSpan 

(ceci est expliqué dans la note 2 ci-dessus mais c’était sous une forme cryptée 🙂

J’ai rencontré ceci dans les circonstances suivantes:

  • J’exécutais Visual Studio 2013.
  • Mon projet knock-out utilisait TypeScript 1.5.
  • J’exécutais mon projet en chrome à l’aide du débogueur Visual Studio.
  • J’avais mal refait un peu de code et négligé de recomstackr ou de ré-exécuter le débogueur.

À cause de cela, je crois que ce qui s’est passé, c’est que j’avais un mauvais TypeScript qui ne comstackrait pas, mais que je n’obtenais aucun avertissement ou erreur à cet effet et que les modifications apscopes à mon TypeScript ne se reflétaient pas correctement dans généré des fichiers JavaScript.

Il peut être inhabituel que d’autres voient cela, mais je suppose qu’un avertissement est que vous pourriez rencontrer ce comportement, ou tout autre comportement inattendu, si vous modifiez TypeScript en cours d’exécution lors de l’exécution du débogueur VS. Je soupçonne que j’avais créé la situation décrite par Mark Robinson dans mes fichiers js générés automatiquement, mais je n’ai pas vu cela dans mon TypeScript.