J'ai un grand viewmodel, et je voudrais publier la mise à jour d'un statut (« lire »/« non lu ») au serveur sans affichage l'ensemble du modèle.Comment utiliser les liaisons personnalisées?
Ce que je l'ai fait est de créer une liaison personnalisée comme ceci:
ko.bindingHandlers.statusUpdater = {
update: function(element, valueAccessor) {
console.log(element);
}
};
Dans le modèle:
<div data-bind='template: { name: "contactsListTemplate", data: viewModel.conversations.conversationlist }'> </div>
<script type="text/html" id="contactsListTemplate">
<table>
<tbody>
{{each(i, conversation) $data}}
<tr>
<td>
<input type="checkbox" data-bind="checked: read, statusUpdater: conversation_id" />
</td>
</tr>
{{/each}}
</tbody>
</table>
</script>
Pour la liaison personnalisée, je suis seulement intéressé par les mises à jour, ce que je Je pensais que cela me permettrait de détecter une mise à jour avec KnockoutJS, et de déterminer quel élément a été mis à jour pour que je puisse saisir l'ID de cet élément et de nouvelles statistiques, puis le publier sur le serveur.
Ce qui se passe est le CustomBinding est le console.log
Ging chaque case à cocher sur une seule modification de case à cocher. Cela signifie que je change une case à cocher et que les trois cases à cocher se connectent à la console via le ko.bindingHandlers.statusUpdater
.
Je pensais à l'ajout d'un événement de clic pour la liaison de données, mais cela ne semblait pas aussi propre comme liaison personnalisée. Peut-être que ce que j'essaie de faire avec les liaisons personnalisées n'est pas ce qu'elles sont?
Pensées?
Merci pour cela, mais ce serait le point de vue ressembler à l'intérieur des données-bind = « » Je ne peux pas sembler relier les points encore sur ce knockoutjs choses. Merci – AnApprentice