Принудительно применять applyBinding в knockout.js - PullRequest
1 голос
/ 02 июня 2011

Я использую knockout , чтобы привязать элемент dom к модели представления, и все работает отлично, когда модель элемента применяется к элементу dom впервые.

Позже очень похожая модель представления применяется к тому же элементу dom, но привязки не будут обновляться - вероятно, потому что knockout полагает, что это та же модель представления, что и раньше.

Есть ли способ заставить нокаут применить новую модель представления и отказаться от старой модели представления?

1 Ответ

4 голосов
/ 02 июня 2011

Наиболее распространенным подходом является использование привязки шаблона. Это будет выглядеть примерно так:

<div data-bind="template: { name: 'mainTmpl', data: myData }"></div>


var viewModel = {
    myData: ko.observable(),
}    

Теперь вы можете установить myData для вашей новой модели представления, например: viewModel.myData(newData), и привязка шаблона будет обрабатывать повторный рендеринг вашего контента на основе новых данных.

В противном случае вы можете сделать что-то вроде вызова: ko.cleanNode(yourRootElement) (или передать документ) и затем ko.applyBindings(yourNewViewModel), чтобы удалить привязки и применить их к новой модели представления.

...