未捕获的类型错误:对象[对象的对象]无方法“数据绑定”

问题描述:

未捕获的类型错误:对象[对象的对象]无方法“数据绑定” 葛亭此错误需要分离数据从呈现结合(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> 
+0

大。请显示一些代码。 – Ryan 2012-07-05 13:48:55

+0

显示一些代码,而不仅仅是错误! – Sirko 2012-07-05 13:49:06

dataBind函数是不引人注目的Knockout库的一部分,它不会默认使用jQuery。

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

[不显眼的淘汰赛] http://userinexperience.com/?p=689

+0

谢谢包括knockout.unobtrusive.js它工作:) – Ram 2012-07-06 09:59:45

除非你使用的jQuery插件,你没有在示例中显示,没有jQuery dataBind函数

而是将数据绑定应用到html元素本身。更改

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

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

和权利之前删除$ .dataBind调用应用绑定

执行相同的 “#tickets” 数据绑定以及

编辑:其实这个问题有很多问题,所以我做了一个jsfiddle来显示正确的方法:

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

+0

感谢它真的很有帮助,但希望从演示文稿中分离数据绑定。 JsFiddle帮助很多再次感谢:),错过包括 - knockout.unobtrusive.js – Ram 2012-07-06 09:57:55