How to fix Uncaught TypeError: Cannot read propert

2019-02-02 06:43发布

问题:

I have a little problem. I'm using backbone.js. I wrote this code like in example:

<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 I started server and in browser console type this:

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

And this follows to error: Uncaught TypeError: Cannot read property 'prototype' of undefined. But data is present in response. Details in picture. How to fix this? Thanks for you answers.

回答1:

I fixed this bug. The problem was that I created Collection and then the Model. Collections use user model, as working unit, but when I defined this Collection, I did not define Model.

So, if you want to avoid this bug, firstly define a Model and only then define the Collection.



回答2:

Backbone Js has dependency with underscore.js and jQuery, try reordering the resources. This worked for 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>