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.