4

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>");

ここのフィドルをチェックして、完全に機能するコードを確認してください。

私が書いた2行の違いを見ることができます.javascript onclickを実行すると動作しますが、明らかにkoには遅延バインディングがありません.

これについて多くの質問を見てきましたが、決定的な答えを見つけることができません。

これを KO で実行したいのですが、どうすれば実現できますか? たぶんテンプレートで?

4

1 に答える 1

3

ko.applyBindings を呼び出すと、KO はバインディングを適用します。したがって、applyBindings が呼び出された後に dom を変更すると、. 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>

マウリツィオによる編集。他のリンクが壊れているように見えるので、このフィドルを使用してください: フィドルを参照してください

于 2013-07-08T09:24:17.750 に答える