web-dev-qa-db-ja.com

Uncaught TypeErrorの修正方法:未定義のプロパティ 'prototype'を読み取れませんか?

少し問題があります。私は、backbone.jsを使用しています。例のようにこのコードを書きました:

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

私がサーバーを起動し、ブラウザコンソールでこれを入力するよりも:

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

そして、これはエラーに続きます:Uncaught TypeError: Cannot read property 'prototype' of undefined。ただし、応答としてデータが存在します。写真の詳細。これを修正する方法は?回答ありがとうございます。enter image description here

enter image description here

36
Cat H

このバグを修正しました。問題は、コレクションを作成してからモデルを作成したことです。コレクションはユーザーモデルを作業単位として使用しますが、このコレクションを定義したときにモデルを定義しませんでした。

したがって、このバグを回避する場合は、最初にモデルを定義してから、コレクションを定義してください。

63
Cat H

Backbone Jsはunderscore.jsおよびjQueryに依存しています。リソースの順序を変更してください。これは私のために働いた:

<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