-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 提供。

您需要添加对页面的引用才能使用它。这就是您收到“没有方法数据绑定”错误的原因。

[不显眼的淘汰赛] 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 回答