web-dev-qa-db-fra.com

Pourquoi est-ce que j'obtiens une erreur "Impossible de lire la propriété 'nodeType' de null" avec Knockout JS?

Aujourd'hui est le premier jour pour moi à Knockout. Vous en avez été frappé. Ci-dessous est mon premier exemple de code utilisant knockout.js et il montre une erreur.

Impossible de lire la propriété 'nodeType' de null

Voici mon 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());  `

Voici mon 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>

Je veux connaître la raison de l'erreur ci-dessus et comment la surmonter ...

33
Prasath K

Si vous configurez votre code comme ceci, cela fonctionnera.

<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>
44
Brigand

Si vous souhaitez conserver votre <script> en haut de la page, vous pouvez utiliser la fonction ready () de jQuery pour retarder l'initialisation jusqu'au chargement de la page.

$(document).ready(function() {
    ko.applyBindings(new ViewModel());
});
35
lance-java

Je pense que ko.applyBindings (obj); doit être écrit sous le modèle de vue.

<!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>
1
Shemeer M Ali