Como limpar / remover ligações observáveis ​​em Knockout.js?

Estou criando funcionalidade em uma página da Web que o usuário pode executar várias vezes. Por meio da ação do usuário, um objeto / modelo é criado e aplicado ao HTML usando ko.applyBindings ().

O HTML vinculado a dados é criado por meio de modelos jQuery.

Por enquanto, tudo bem.

Quando eu repito esta etapa criando um segundo objeto / modelo e chamo ko.applyBindings () eu me deparo com dois problemas:

A marcação mostra o objeto / modelo anterior, bem como o novo objeto / modelo.Ocorre um erro de javascript relacionado a uma das propriedades no objeto / modelo, embora ainda seja renderizado na marcação.

Para contornar este problema, após o primeiro passo eu chamo o .empty () do jQuery para remover o HTML modelado que contém todos os atributos de vinculação de dados, para que ele não esteja mais no DOM. Quando o usuário inicia o processo para a segunda passagem, o HTML vinculado a dados é adicionado novamente ao DOM.

Mas como eu disse, quando o HTML é re-adicionado ao DOM e re-ligado ao novo objeto / modelo, ele ainda inclui dados do primeiro objeto / modelo, e ainda recebo o erro JS que não ocorre durante o primeiro passe.

A conclusão parece ser que o Knockout está mantendo essas propriedades vinculadas, mesmo que a marcação seja removida do DOM.

Então, o que estou procurando é um meio de remover essas propriedades vinculadas do Knockout; contando nocaute que não há mais um modelo observável. Existe uma maneira de fazer isso?

EDITAR

O processo básico é que o usuário carrega um arquivo; Em seguida, o servidor responde com um objeto JSON, o HTML vinculado a dados é adicionado ao DOM e, em seguida, o modelo de objeto JSON é vinculado a esse HTML usando

<code>mn.AccountCreationModel = new AccountViewModel(jsonData.Account);
ko.applyBindings(mn.AccountCreationModel);
</code>

Depois que o usuário fez algumas seleções no modelo, o mesmo objeto é postado de volta no servidor, o HTML vinculado a dados é removido do DOM e eu tenho o seguinte JS

<code>mn.AccountCreationModel = null;
</code>

Quando o usuário desejar fazer isso mais uma vez, todas essas etapas serão repetidas.

Eu tenho medo que o código esteja "envolvido" demais para fazer uma demonstração do jsFiddle.

questionAnswers(9)

yourAnswerToTheQuestion