即使使用默认教程,也无法应用knockout绑定

时间:2013-11-30 18:14:19

标签: javascript jquery knockout.js

我正在尝试将绑定应用于特定的DOM元素,但我的代码或示例here

都没有成功

这就是我现在所拥有的:

var Test = function(first, last){
    this.first = ko.observable(first);
    this.last = ko.observable(last);
}

ko.applyBindings(new Test("Hello", "World"), $("#Element").get());

我一直得到这个

Uncaught Error: ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node 

我试过给它只有jQuery元素也无济于事。我可以通过视觉和控制台测试确认$(“#Element”)是DOM的一部分。

3 个答案:

答案 0 :(得分:6)

没有任何参数$("#Element").get()执行以下操作(doc):

  

检索由jQuery对象匹配的DOM 元素

所以它返回匹配元素的数组,即使这个数组只包含一个元素。

所以你需要使用带索引的重载:

ko.applyBindings(new Test("Hello", "World"), $("#Element").get(0));

或索引返回的数组:

ko.applyBindings(new Test("Hello", "World"), $("#Element").get()[0]);

答案 1 :(得分:2)

jQuery的.get()函数,没有参数,返回集合。如果只想要DOM节点引用,则需要将索引0传递给它,如下所示:

ko.applyBindings(new Test("Hello", "World"), $("#Element").get(0));

答案 2 :(得分:0)

试试这个..

 var Test = function(first, last){
   this.first = ko.observable(first);
   this.last = ko.observable(last);
 }

 ko.applyBindings(new Test("Hello", "World"), $("#Element").get(0));

确保ID为“Element”的DOM元素存在