未捕获的TypeError:对象[object Object]没有方法'dataBind'

时间:2012-07-05 13:47:41

标签: knockout.js

未捕获TypeError:对象[object Object]没有方法'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>

2 个答案:

答案 0 :(得分:1)

dataBind函数是不显眼的Knockout库的一部分,默认情况下它不是jQuery。

您需要添加对您网页的引用才能使用它。这就是为什么你得到'没有方法dataBind'错误。

[不引人注目的淘汰赛] http://userinexperience.com/?p=689

答案 1 :(得分: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/