空白要素のafterAdd関数を呼び出すKnockoutJS

一般的に、私はKnockoutJSのテンプレートデータバインディングのafterAddプロパティの大きなファンです。しかし、私は、私のafterAddコールバックは常に3回ヒットすることがわかりました。間違って何かしていますか?

コールバックは次のように動作します。

  • 電話1:テキストノード
  • 電話2:私が気にかけている実際の要素
  • 呼び出し3:textnode

対処するために、すべてのハンドラは、次のようにisElementContentWhitespaceのチェックを持つことになります。

HTML

<script id="itemTmplt" type="text/html">
  • </script>

    JS

    my.ns("mme.ko");
    my.ko = (function() {
        "use strict";
    
        return {
            itemAdd: function (elem, idx, val) {
                if (elem.isElementContentWhitespace) { return; }
    
                /*** do stuff here ***/
            }
        };
    } ());
    
    9

    1 答え

    afterAdd currently is called foreach node that Knockout finds in your template.

    nodeTypeをチェックしたくない場合は、テンプレートの空白を次のように削除できます。

    <script id="itemTmplt" type="text/html">
  • </script>

    このテンプレートを使用すると、 li 要素で afterAdd という名前が呼び出されます。

    8
    追加された