调用ko.applyBindings时获取“无法读取null的属性’nodeType’

我有一个淘汰码:

功能任务(数据){
this.title=ko.可观察(data.title);
this.isDone=ko.可观测(data.isDone);
}
函数TaskListViewModel(){
//资料
var self=这个;
self.tasks=ko.observearray([]);
self.newTaskText=ko.observable();
self.incompleteTasks=ko.computed(函数(){
return ko.utils.arrayFilter(self.tasks(),function(task){return!task.isDone()});
});
//操作
self.addTask=函数(){
push(新任务({title:this.newTaskText()}));
self.newTaskText(“”);
};
self.removeTask=函数(任务){self.tasks.remove(任务)};
}
应用绑定(新的TaskListViewModel());

此html:

<头>
<script type=“text/javascript”src=”https://stackoverflow.com/questions/9128015/jquery-1.7.1.min.js“&gt&lt/脚本>
<script type=“text/javascript”src=”https://stackoverflow.com/questions/9128015/knockout-2.0.0.js“&gt&lt/脚本>
<script type=“text/javascript”src=”https://stackoverflow.com/questions/9128015/script.js“&gt&lt/脚本>
&lt/头>
<车身>
<h3>任务&lt/h3>
<表单数据绑定=“提交:添加任务”>
添加任务:<输入数据bind=“value:newTaskText”placeholder=“需要做什么?”/>
<按钮类型=“提交”>添加&lt/按钮>
&lt/表格>
<ul data bind=“foreach:tasks,visible:tasks()。长度>0”>
<李>
<输入type=“checkbox”数据绑定=“checked:isDone”/gt;
<输入数据绑定=“值:标题,禁用:isDone”/>
<a href=“”数据绑定=“单击:$parent.removeTask”>删除&lt/a>
&lt/李>
&lt/ul>
你有<b data bind=“text:uncompleteTasks().length”&gt&nbsp&lt/b>未完成的任务
<span data bind=“可见:未完成任务()。长度==0”>-啤酒时间到了&lt/span>
&lt/车身>

该示例与Knockout网站上的示例相同,但当我运行它时,它会在Chrome Fire Bug上返回以下消息:

未捕获的TypeError:无法读取null的属性“nodeType”

这一个与敲除文件和我的脚本的这一行相关:

ko.applyBindings(新的TaskListViewModel());

这个错误在敲除时指向这一行(1766):

var isElement=(nodeVerified.nodeType==1);

我做错了什么

发生此问题的原因是我试图在创建HTML元素之前绑定它

我的脚本加载在HTML(头部)的顶部,但它需要加载在HTML代码的底部(就在结束正文标记之前)

谢谢你的关注,詹姆斯·阿勒迪斯

一种可能的解决方法是使用defer=“defer”

<脚本src=”https://stackoverflow.com/questions/9128015/script.js“type=“text/javascript”defer=“defer”&gt&lt/脚本>

如果脚本不生成任何文档内容,请使用此选项。这将告诉浏览器在加载脚本之前可以等待加载内容

进一步阅读

希望能有帮助

发表评论