Déclencheur backbone.js changer lorsque la valeur ne change pas
C'est une caractéristique connue de backbone.js lors de la configuration des données qui n'a pas changé, il ne se déclenche pas l'événement de changement, ni d'aller dans les validations. J'ai cependant besoin de l'événement de changement de feu comme je suis stocker une réponse JSON à partir d'un appel AJAX qui stocke les résultats de backend de validation. Si l'utilisateur conserve la soumission du formulaire, tout en laissant le même champ vide, le backend de validation sera de retour le même résultat JSON et quand je l'ai enregistrer dans le modèle, il ne déclenche pas l'événement de changement.
Quelques choses que j'ai essayé au sein de l'AJAX succès de rappel où j'ai mis les données dans le modèle:
Tentative De Solution #1
t.model.unset('fieldErrors',{silent: true});
t.model.set({fieldErrors: JSONResponse});
Tentative De Solution #2
t.model.set({fieldErrors: null},{silent: true});
t.model.set({fieldErrors: JSONResponse});
Aucune de ces résultats dans l'événement de changement de tirer une deuxième fois lors de l'appel et l'utilisateur a la même JSONResponse.
- Si vous n'avez pas peur de réutilisable, voir ScottPuleo de réponse. Sinon, vous pouvez remplacer la
Model#set
méthode à toujours le feu d'un événement personnalisé (je vais poster une réponse sur la façon si vous êtes intéressé).
Vous devez vous connecter pour publier un commentaire.
Déclencher manuellement l'événement de changement:
ou
trigger
méthode est tout ce qui est nécessaire ici. N'oubliez pas de transmettre les paramètres nécessaires comme l'épine dorsale de ne pas le faire pour vous lorsque vous déclencher manuellement.trigger
? Quand je n'en ai pas,Collection._onModelEvent
- ce qui est appelé plus tard - ne reçoit pas le modèle. Il me semble quemodel.trigger('change')
devrait être suffisant pour transférer le modèle de la suite des événements. Savez-vous pourquoi il ne l'est pas? (désolé si ma question n'est pas clair...)