Je suis la fonctionnalité du bâtiment sur une page web que l'utilisateur peut effectuer plusieurs fois. Grâce à l'action de l'utilisateur, un objet de modèle est créé et appliqué HTML à l'aide de ko.applyBindings().
Les données liées HTML est créé grâce à jQuery templates.
So far So good.
Quand je répétez cette étape en créant un deuxième objet, de modèle et d'appel ko.applyBindings (), je rencontre deux problèmes:
- Le balisage indique l'objet précédent modèle, ainsi que le nouvel objet/modèle.
- Une erreur javascript se rapportant à l'une des propriétés de l'objet/modèle, bien qu'il soit encore rendu dans le balisage.
Pour contourner ce problème, après le premier passage que j'appel de jQuery .empty() pour supprimer le basé sur un modèle HTML qui contient toutes les données-lier attributs, de sorte qu'il n'est plus dans les DOM. Lorsque l'utilisateur démarre le processus pour le deuxième passage lié aux données HTML est de nouveau ajouté au DOM.
Mais comme je l'ai dit, quand le HTML est de nouveau ajouté au DOM et re-lié à l'objet nouveau modèle, il comprend toujours des données à partir de la le premier objet/modèle, et j'ai toujours l'erreur JS qui ne se produit pas lors de la première passe.
La conclusion semble être que le knock-out est maintenant sur ces propriétés liées, même si le balisage est retiré de la DOM.
Donc, ce que je suis à la recherche d'un moyen d'enlever ces propriétés liées de knock-out; disant knock-out qu'il n'est plus observable modèle. Est-il un moyen de faire cela?
MODIFIER
Le processus de base est que l'utilisateur télécharge un fichier; ensuite, le serveur répond avec un objet JSON, lié aux données HTML est ajouté au DOM, puis l'objet JSON modèle est lié à cette HTML à l'aide de
mn.AccountCreationModel = new AccountViewModel(jsonData.Account);
ko.applyBindings(mn.AccountCreationModel);
Une fois que l'utilisateur a fait quelques sélections sur le modèle, le même objet est affiché sur le serveur, les données liées HTML est supprimé à partir de là DOM, et j'ai ensuite les suivantes JS
mn.AccountCreationModel = null;
Lorsque l'utilisateur souhaite le faire une fois de plus, toutes ces étapes sont répétées.
J'ai peur que le code est trop "impliqués" pour faire un jsFiddle démo.