web-dev-qa-db-fra.com

Comment réparer Uncaught TypeError: Impossible de lire la propriété 'prototype' de undefined?

J'ai un petit problème. J'utilise backbone.js. J'ai écrit ce code comme dans l'exemple:

<script>
$(document).ready(function () {
    window.App = {
        Views: {},
        Models: {},
        Collections: {}
    }

    App.Collections.Users = Backbone.Collection.extend({
         model: App.Models.User,
         url: 'service'
    });
    App.Models.User = Backbone.Model.extend({});

    App.Views.App = Backbone.View.extend({
         initialize: function() {
             console.log( this.collection.toJSON() );
         }
    });

});
</script>

Puis j'ai démarré le serveur et dans la console du navigateur, tapez ceci:

var x =new App.Collections.Users();
x.fetch()

Et ceci suit à l'erreur: Uncaught TypeError: Cannot read property 'prototype' of undefined. Mais les données sont présentes en réponse. Détails en image. Comment régler ceci? Merci pour vos réponses.enter image description here

enter image description here

36
Cat H

J'ai corrigé ce bug. Le problème était que j'ai créé Collection, puis le modèle. Les collections utilisent le modèle utilisateur en tant qu'unité de travail, mais lorsque j'ai défini cette collection, je n'ai pas défini de modèle.

Donc, si vous voulez éviter ce bogue, commencez par définir un modèle, puis définissez ensuite la collection.

63
Cat H

Backbone Js a une dépendance avec underscore.js et jQuery, essayez de réorganiser les ressources. Cela a fonctionné pour moi:

<head>
    <title>Backbone</title>

    <!-- Scripts Load Here-->       
    <script type="text/javascript" src="js/jquery-1.11.0.min.js"></script>
    <script type="text/javascript" src="js/underscore.js"></script>
    <script type="text/javascript" src="js/backbone.js"></script>
</head>
27
rzskhr