Sans savoir ce que vous faites exactement, il semble que vous êtes va dans le mauvais sens à ce sujet. Votre vue doit être dicté par votre modèle de vue. Donc, vous ne devriez pas ajouter directement des éléments du DOM vous devez ensuite appliquer knock-out liaisons.
Au lieu de cela, vous devriez être mise à jour de votre modèle de vue afin de refléter le changement dans la vue, ce qui provoque alors votre nouvel élément à apparaître.
Ainsi, par exemple, pour votre $('body').append('<a href="#" data-bind="click: something">Click me!</a>');
, plutôt que d'ajouter l'élément du DOM où le bouton doit être visible, le bouton de contrôle de la visibilité en utilisant le modèle de vue.
Si votre modèle d'affichage comprend
var viewModel = { clickMeAvailable: ko.observable(false) }
Et votre HTML comprend
<a href="#" data-bind="click: something, visible: clickMeAvailable">Click me!</a>
Lorsque l'état de l'application des changements, de sorte cliquez sur le bouton me est disponible, vous n' viewModel.clickMeAvailable(true)
.
Le point de le faire, et une grande partie de knock-out, est de séparer la logique métier de la présentation. Donc le code qui permet de cliquez-moi disponible ne se soucie pas que sur moi implique un bouton. Tout ce qu'il fait est de mettre à jour viewModel.clickMeAvailable
lorsque cliquez sur-moi est disponible.
Par exemple, dire sur moi, c'est un bouton enregistrer qui devrait être disponible lorsqu'un formulaire est rempli valablement. Vous auriez de la cravate sur le bouton enregistrer de la visibilité à une formValid
modèle de vue observables.
Mais ensuite, vous décidez de changer les choses pour une fois que le formulaire est valide, un accord juridique qui doit être consenti à l'avant de l'enregistrer. La logique de votre forme ne change pas, il met toujours formValid
lorsque le formulaire est valide. Vous serait-il suffit de changer ce qui se produit lorsqu' formValid
changements.
Comme lassombra points dans les commentaires sur cette réponse, il ya des cas où directe de manipulation du DOM peut être votre meilleure approche - par exemple un complexe dynamique de la page où vous voulez seulement pour hydrater les parties de la vue qu'elles sont nécessaires. Mais vous êtes renoncer à la séparation des préoccupations knock-out fournit en faisant cela. Être conscient de si vous songez à faire ce compromis.