-2

キャッチされていない TypeError: Object [object Object] has no method 'dataBind' このエラーを取得するには、プレゼンテーション (HTML) からデータ バインディングを分離する必要があります

<script type="text/javascript" src="/Scripts/knockout-2.1.0.js"></script>
<script type="text/javascript" src="/Scripts/jquery-1.7.2.js"></script>

Choose a ticket class:
    <select id='tickets'></select>
<p id='ticketOutput'></p>
<script id="ticketTemplate" type="text/x-jquery-tmpl">
    {{if chosenTicket}}
        You have chosen <b>${ chosenTicket().name }</b>
    ($${ chosenTicket().price })
        <button data-bind="click: resetTicket">Clear</button>
    {{/if}}
</script>
<script type="text/javascript">
    var viewModel = {
        tickets: [
            { name: "Economy", price: 199.95 },
            { name: "Business", price: 449.22 },
            { name: "First Class", price: 1199.99 }
        ],
        chosenTicket: ko.observable(),
        resetTicket: function () { this.chosenTicket(null) }
    };
    $('#tickets').dataBind({
Uncaught TypeError: Object [object Object] has no method 'dataBind'
        options: 'tickets',
        optionsCaption: "'Choose...'",
        optionsText: "'name'",
        value: 'chosenTicket'
    });
    $('#ticketOutput').dataBind({ template: "'ticketTemplate'" });
    ko.applyBindings(viewModel);
</script>
4

2 に答える 2

1

dataBind 関数は目立たない Knockout ライブラリの一部であり、デフォルトでは jQuery には付属していません。

ページを使用できるようにするには、ページへの参照を追加する必要があります。そのため、「メソッド dataBind がありません」というエラーが発生します。

[控えめなノックアウト] http://userinexperience.com/?p=689

于 2012-07-05T19:09:24.933 に答える
0

サンプルに表示されていない jQuery プラグインを使用していない限り、jQuery dataBind 関数はありません。

代わりに、html 要素自体にデータバインドを適用してください。変化する

<p id='ticketOutput'></p>

<p id='ticketOutput' data-bind=" template: 'ticketTemplate' "></p>

バインディングを適用する直前にその $.dataBind 呼び出しを削除します

「#tickets」データバインドについても同じことを行います

編集:実際には、この質問にはたくさんの問題があったので、これを行う正しい方法を示すjsfiddleを作成しました:

http://jsfiddle.net/daedalus28/TAVgp/

于 2012-07-05T18:32:29.487 に答える