Knockout JS с конвертером HTML в PDF

Я повсюду искал ответ на этот вопрос, и, возможно, ответ таков: его не существует, но я надеюсь, что у кого-то есть какая-то магия.

Я использую Knockout для привязки нескольких форм на странице. Все это работает фантастически. Однако попытка отправить эти формы в конвертер PDF оказалась проблемой.

Визуализированный HTML по-прежнему выглядит как Knockout-y. Я пытался получить визуализированный DOM с помощью $('body').html(), но я все еще получаю теги HTML с атрибутами привязки данных. Есть ли способ получить окончательный обработанный чистый HTML для передачи в PDF-конвертер?


person summers    schedule 05.09.2012    source источник


Ответы (1)


Вы можете захватить визуализированные элементы до того, как они будут добавлены в DOM в событии afterRender. См. http://knockoutjs.com/documentation/template-binding.html#note_3_using_afterrender_afteradd_and_beforeremove для получения дополнительной информации.

Если вам нужен доступ к окончательным отображаемым элементам, создайте пользовательскую привязку (http://jsfiddle.net/nE7kK/):

<body data-bind="getRenderedElements: viewModel">
    <ul data-bind="foreach: viewModel">
        <li data-bind="text: name"></li>
    </ul>
</body>

viewModel = ko.observableArray([
    { name: "Bungle", type: "Bear" },
    { name: "George", type: "Hippo" },
    { name: "Zippy", type: "Unknown" }
]);

ko.bindingHandlers.getRenderedElements = {
   update: function (element, valueAccessor) {
       // use timeout so browser has time to render the elements
       setTimeout(function() {
            var html = $(element).html();
            alert(html);
       }, 1000);
   }
};

ko.applyBindings(viewModel);

Примечание. Если вы используете виртуальные элементы, вы должны указать Knockout разрешить привязке getRenderedElements доступ к этим элементам, см.: http://knockoutjs.com/documentation/custom-bindings-for-virtual-elements.html

person mhu    schedule 05.09.2012
comment
Я изучил это, но я не уверен, как вернуть это в сам DOM, чтобы отобразить полный документ для отправки в конвертер PDF. - person summers; 05.09.2012
comment
Это работает хорошо, за исключением полей ввода текста. Это немного коротковато. Спасибо за Ваш ответ! - person summers; 06.09.2012