Почему я получаю сообщение "Can not read property" nodeType "null" с нокаутом JS?
Сегодня первый день для меня в Нокауте. Поразило это. Ниже приведен мой первый пример кода с использованием knockout.js, и он показывает ошибку.
Невозможно прочитать свойство 'nodeType' из null
Вот мой script: `
function ViewModel()
{
var self = this;
self.n1 = ko.observable(10);
self.n2 = ko.observable(10);
self.n3 = ko.observable(10);
}
ko.applyBindings(new ViewModel()); `
Вот мой html:
<body>
<p>Number1:<input data-bind="value:n1"></input></p>
<p>Number2:<input data-bind="value:n2"></input></p>
<p>Number3:<input data-bind="value:n3"></input></p>
</body>
Я хочу знать причину вышеуказанной ошибки и как ее преодолеть...
Ответы
Ответ 1
Если вы настроите свой код таким образом, он будет работать.
<body>
<p>Number1:<input data-bind="value:n1"></p>
<p>Number2:<input data-bind="value:n2"></p>
<p>Number3:<input data-bind="value:n3"></p>
<script src="knockout.js"></script>
<script>
function ViewModel() {
var self = this;
self.n1 = ko.observable(10);
self.n2 = ko.observable(10);
self.n3 = ko.observable(10);
}
ko.applyBindings(new ViewModel()); `
</script>
</body>
Ответ 2
Если вы хотите сохранить <script>
в верхней части страницы, вы можете использовать функцию jQuery ready() для задержки инициализации до загрузки страницы.
$(document).ready(function() {
ko.applyBindings(new ViewModel());
});
Ответ 3
Я думаю, что ko.applyBindings(obj); следует писать в режиме просмотра.
<!DOCTYPE html>
<html>
<head>
<title>KO Examples</title>
<script type='text/javascript' src='knockout-3.1.0.js'></script>
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript'>
var obj = {
first_name : 'Gazal Irish'
};
</script>
</head>
<body>
<div>
<p>My name : <span data-bind="text: first_name"></span>
<p>
</div>
<script type="text/javascript">
ko.applyBindings(obj);
</script>
</body>
</html>