0

ノックアウト js を使用して顧客向けのドラッグ アンド ドロップ ダイアリーを作成しています。クロムでのテストに切り替えたところ、ノックアウト"Cannot read property 'childNodes' of undefined"parseBindingString機能でこの不思議なエラーが発生しましたが、このテンプレートは FireFox/IFE10 でテストされ、機能しています。 .

バインディングでエラーがスローされますがcss: { blackout: workingHours($parent.DaysArray(0), $parents[1].ViewDate()).startTime.getTime() == workingHours($parent.DaysArray(0), $parents[1].ViewDate()).finishTime.getTime() }、デバッガーのコンテキストでは、nodeローカル変数には予想どおり 4 つの子ノードが登録されているため、ノックアウトはここでいくつかの深刻なツリー ナビゲーションを実行しようとする必要があります。これは、関数やクラスworkingHours()の追加には必要ありません。blackout現在のノードに。

ブラウザー間で DOM が構築される方法がわずかに異なるため、これはクロムでのみ発生したと思いますが、この種の問題を解決する方法について誰かアドバイスをいただけますか? または確認することは?

<td data-bind="
    css: { 
        blackout: workingHours($parent.DaysArray(0), $parents[1].ViewDate()).startTime.getTime() == workingHours($parent.DaysArray(0), $parents[1].ViewDate()).finishTime.getTime() }">
    <div class="unallocated-booking">
        <div class="status-bar-holder mini-status-bar-holder" data-bind="
            template: { 
                name: 'unallocated-booking-template', 
                foreach: todaysBookings($parent.DaysArray(0), bookings, $parents[1].ViewDate()) }"/>
    </div>
    <div data-bind="
        attr: { 
            'data-init-droppable': false }, 
        class: { 
            droppable: isWorkDay( $parent.DaysArray(0), $parents[1].ViewDate() ) }, 
        template: { 
            name: 'week-cell-template', 
            foreach: todaysBookings($parent.DaysArray(0), bookings, $parents[1].ViewDate()) }"/>
</td>

些細なことですが(おそらく別の質問が必要です)、皮肉なことに、バインディングを追加してクロムでデバッグしたかったので、最後の要素のattr/ class/バインディングが&バインディングtemplateを無視しているように見えるため、クロームでロードしようとしました。しかし、私はすでにすべてのノックアウト.js愛好家の注目を集めているので、ここにプラグインしようと思いました:p. 構文に問題は見られませんが、関連している可能性もあります。classattrtemplate

4

1 に答える 1

1

Knockout.js はこの問題の原因ではありませんでした

getElementsByTagName()検索された要素の名前空間を指定する必要がない (または動作するときに動作する) ため、Chrome で動作する方法の違いであることが判明しました。

于 2013-09-10T09:09:48.063 に答える