2013-10-31 10 views
36

Ho un piccolo problema. Sto usando backbone.js. Ho scritto questo codice come nell'esempio:Come risolvere Uncaught TypeError: Impossibile leggere il 'prototipo' di proprietà di undefined?

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

Than ho iniziato a server e il browser di tipo console questo:

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

E questo segue all'errore: Uncaught TypeError: Cannot read property 'prototype' of undefined. Ma i dati sono presenti in risposta. Dettagli in foto Come risolvere questo? Grazie per le risposte. enter image description here

enter image description here

risposta

62

Ho risolto questo bug. Il problema era che ho creato Collection e poi il modello. Le raccolte utilizzano il modello utente, come unità di lavoro, ma quando ho definito questa raccolta, non ho definito Modello.

Pertanto, se si desidera evitare questo errore, definire innanzitutto un modello e solo successivamente definire la raccolta.

+4

Questo era il problema anche per il mio caso, grazie! Sto usando Gulp, quindi se qualcuno lo sta usando per favore controlla la sequenza di caricamento. – Sander

+0

Sì, ho rinominato il modello in cui la raccolta faceva riferimento, causando questo errore. –

+3

dio benedica StackOverflow. Quel messaggio di errore non mi avrebbe mai portato a quella convinzione. Sono anche vittima di un piccolo sorso. – ProblemsOfSumit

26

Backbone Js ha dipendenza con underscore.js e jQuery, prova a riordinare le risorse. Questo ha funzionato per me:

<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

Vedo che questo è corretto. a causa dell'ordine di importazione della libreria – kidnan1991

+1

ho avuto un problema simile a quello che backbone.min si lamentava di aver letto la proprietà di undefined, sospettavo fosse un problema di raccolta, era un problema di ordine di importazione lol, grazie ragazzi – Syntaxsizer

Problemi correlati