我正在尝试为学校做一个knockout.js 项目,我需要将一个可观察数组绑定(bind)到一个选择下拉列表。以下代码不起作用,并在 applyBindings
行上出现此错误:
Uncaught TypeError: Cannot read property 'nodeType' of null
有什么想法吗?这是我的代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>title</title>
<script src="knockout.js"></script>
<script>
function ViewModel() {
var self = this;
self.options1 = ko.observableArray([{id: 0, name: "Example option"}]);
}
ko.applyBindings(new ViewModel());
</script>
</head>
<body>
<!-- page content -->
<select data-bind="options: options1"/>
</body>
</html>
最佳答案
在确定 DOM 已加载之前,不应调用 ko.applyBindings
。目前,在您的代码中,您会在该行代码命中时立即执行 applyBindings
。此时,浏览器还没有遇到 body
标记,因此它不知道要绑定(bind)到什么。
快速解决方法是:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>title</title>
<script src="knockout.js"></script>
</head>
<body>
<select data-bind="options: options1"/>
<!-- page content -->
<script>
function ViewModel() {
var self = this;
self.options1 = ko.observableArray([{id: 0, name: "Example option"}]);
}
ko.applyBindings(new ViewModel());
</script>
</body>
</html>
或者,您可以将所述代码推迟到 DOM 加载之后。如果您还在项目中使用 jQuery,则可以使用 $(document).ready
习惯用法。
关于javascript - 未捕获的类型错误 : Cannot read property 'nodeType' of null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29926061/