нокаутная привязка html с другой привязкой внутри

Я использую knockout для динамической загрузки содержимого в части страницы с помощью привязки HTML.

проблема в том, что html, который я хочу привязать, должен вызывать функцию onclick, и мне нужна информация о цели и данные, которые легко отправляются с помощью нокаута.

что-то вроде этого:

myFunction($parent, $data)

HTML:

<table>
    <tbody data-bind="foreach: rows" >
        <tr>
            <td data-bind="html: rowValue">this will be a link</td>
        </tr>
   </tbody>
</table>

Позже я установил значение как ссылку с нокаутирующей привязкой внутри:

rowValue("<a href='#' data-bind=click:alert('hello')" + result.Data + "</a>");

Пожалуйста, проверьте скрипт здесь, чтобы увидеть полный рабочий код.

Вы можете увидеть разницу между двумя строками, которые я написал, если я использую javascript onclick, он работает, но, очевидно, у ko отсутствует поздняя привязка.

Я видел много вопросов по этому поводу, но не могу найти ни одного с однозначным ответом.

Я хочу сделать это с помощью КО, как это можно сделать? может быть с шаблонами?


person Maurizio In denmark    schedule 08.07.2013    source источник


Ответы (1)


KO применяет привязки при вызове ko.applyBindings. Итак, если вы измените dom после вызова applyBindings. KO не узнает о новом элементе dom.

Вы можете использовать шаблон таким образом:

<table>
    <tbody data-bind="foreach: sitesTable.rows" >
        <tr data-bind="foreach: row">
            <td data-bind="template: 'myTemplate' "></td>
        </tr>
    </tbody>
</table>

<br/>


<a href="#" onclick="getNewData()"> click here </a>
<script id="myTemplate" type="text/html">
    <a href='#' data-bind="html: cellValue, click: openAlert"> click </a>
</script>

редактировать Маурицио. Используйте эту скрипку, поскольку кажется, что другие ссылки не работают: См. Скрипку

person Damien    schedule 08.07.2013
comment
спасибо за преобразование моего кода в шаблон. должен ли шаблон выполнять то, что мне нужно, или нет? потому что ваша скрипка этого не делает. Я изменил его, чтобы он работал, но, похоже, привязка данных в шаблоне игнорируется - person Maurizio In denmark; 08.07.2013
comment
на самом деле мне удалось исправить вашу скрипку: jsfiddle.net/MaurizioPiccini/QfLxM/13, если вы могу обновить ваш код, я приму ваш ответ, чтобы его увидели другие. - person Maurizio In denmark; 08.07.2013
comment
Я рад слышать, что это помогло. - person Damien; 08.07.2013