0
votes

Comment corriger "RéférenceError: Index n'est pas défini" problème

J'essaie de connecter mon serveur de repos avec une application JavaScript. Utilisation de la requête Ajax, je reçois le bon Json, mais je ne peux pas le lier à mon site Web HTML. J'utilise les données de données dans HTML:

0: Object { index: 127001, name: "John", surname: "Smith", … }
1: Object { index: 127002, name: "Abcd", surname: "Xyz", … }


9 commentaires

Quel est exactement ko


ko est knockout.js


knockoutjs.com/documentation/observables.html


De ce que je vois, ko.mapping.fromjs ne prend que deux paramètres au plus, et vous le passez 3, le 2e étant un objet vide ... pourquoi est-ce?


sans cela j'ai le même problème


On dirait que vous devez mieux lire la documentation. ko.mapping.fromjs attend un ensemble de données et un modèle de vue, mais au lieu d'une vue de vue, vous lui transmettez une matrice observable.


KnockOutjs.com/documentation/plugins-mbappe.html


Utilisation de ViewModel Comme celui-ci: '' Var MyViewModel = {index: ko.observable (index), nom: ko.observable (nom), nom de famille: ko.observable (nom de famille), Date de naissance: ko.observable (Date de naissance)} '' 'et l'appliquer comme ça: ko.mapping.fromjs (résultat, myViewModel); J'ai toujours un indice n'est pas défini "problème


Avez-vous un data-bind = "foreach: étudiants" quelque part? Sans un votre contexte est le modèle de visualisation root qui n'a pas de propriété "index".


3 Réponses :


0
votes

pris directement à partir du Docs

La première fois que vous récupérez des données, vous devriez faire cela

varmodel = ko.mapping.fromjs (données);

Alors chaque fois que chaque fois les données sont reçues du serveur après que

ko.mapping.fromjs (Data, ViewModel);


1 commentaires

Malheureusement toujours le même problème



0
votes

Votre JSON a l'air bien et il n'y a rien de mal à utiliser 3 arguments pour votre mappage.fromjs avec un objet vide comme argument "Options". Je suppose que c'est une question de contexte avec quel objet votre balisage tente de se lier. Si vous êtes toujours au niveau de la racine, le modèle de vue, la liaison échouera car «index» n'existe pas au niveau de la racine. Vous avez besoin d'un foreach code> liant pour nichoir dans l'objet enfant "Étudiants".

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.min.js"></script>

<table>
  <tbody data-bind="foreach: students">
    <tr>
      <td> <input type="number" data-bind="value: index" name="index" readonly> </td>
      <td> <input type="text" data-bind="value: name" name="name" required> </td>
      <td> <input type="text" data-bind="value: surname" name="surname" required> </td>
      <td> <input type="date" data-bind="value: birthdate" name="birthdate" min="1950-01-01" max="2050-01-01" required> </td>
      <td><button type="button">Edit</button></td>
    </tr>
  </tbody>
</table>


0 commentaires

0
votes

J'ai également réussi à résoudre mon problème de cette manière: xxx

et à l'aide de foreach xxx


0 commentaires