2013-10-31 1 views
36

Ich habe ein kleines Problem. Ich benutze backbone.js. Ich schrieb diesen Code wie in Beispiel:So beheben Sie Uncaught TypeError: Kann Eigenschaft "Prototyp" von undefined nicht lesen?

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

als ich diesen Server und Browser-Konsole Typ gestartet:

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

Und diese folgt dem Irrtum: Uncaught TypeError: Cannot read property 'prototype' of undefined. Aber Daten sind als Antwort vorhanden. Details in Bild. Wie behebe ich das? Danke für Ihre Antworten.

enter image description here

enter image description here

Antwort

62

ich diesen Fehler behoben. Das Problem war, dass ich Collection und dann das Model erstellt habe. Sammlungen verwenden das Benutzermodell als Arbeitseinheit, aber als ich diese Sammlung definiert habe, habe ich Model nicht definiert.

Wenn Sie diesen Fehler also vermeiden möchten, definieren Sie zunächst ein Modell und definieren Sie dann erst die Collection.

+4

Das war das Problem für meinen Fall auch, danke! Ich benutze Gulp, also wenn jemand das benutzt, überprüfe bitte die Reihenfolge des Ladens. – Sander

+0

Ja, ich habe das Modell umbenannt, als die Sammlung referenzierte und diesen Fehler verursachte. –

+3

Gott segne StackOverflow. Diese Fehlermeldung hätte mich nie zu dieser Schlussfolgerung geführt. Ich bin auch ein Opfer von Schluckverkleinerungen. – ProblemsOfSumit

26

Backbone Js hat Abhängigkeit mit underscore.js und jQuery, versuchen Sie, die Ressourcen neu zu ordnen. Das funktionierte für mich:

<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> 
+0

Ich sehe, das ist ein richtiger. aufgrund der Bibliothek Importauftrag – kidnan1991

+1

Ich hatte ähnliches Problem, dass Backbone.min beschweren über das Lesen von Eigentum von undefined Ich vermutete, es war eine Sammlung Problem, es war Importauftrag Problem lol, Danke Jungs – Syntaxsizer

Verwandte Themen