0

People と Teams の 2 つのコレクションがあります。

People コレクションに追加された人がいる場合、Teams コレクションがリッスンするようにします。

ただし、次のエラーが発生し続けます: Uncaught TypeError: Cannot read property '_listenerId' of undefined

おそらく、bind と listenTo の概念を誤解していますか? 以下は、両方のコレクションに使用しているコードです。

        var People = Backbone.Collection.extend({

            url: '/people',

            model: Person,

            comparator: 'id',

            initialize: function() {

                //Why does this return '_listenerID of undefined'
                this.bind('add', function() {
                    var teams = new Teams;
                    teams.render;
                });

            },

        });


        var Teams = Backbone.Collection.extend({

            url: '/team',

            model: Team,

            comparator: 'id',

            initialize: function() {

                this.listenTo(People.collection, 'add', this.render);

            },

            render: function() {

                console.log("POOP")

            }

        });
4

1 に答える 1

5

あなたは確かに、リスナーがどのように機能するかを誤解しています。特定のオブジェクト (つまり、クラスのインスタンス) をリッスンすることになっています。

ここで、Backbone は Backbone オブジェクトのプライベート プロパティにアクセスしてlistenerId、内部バインディングを実行しようとします。あなたの場合、取得しようとしていますPeople.collection._listenerId。あなたのクラスであり、プロパティをPeople持たないため、未定義であるため、エラーになります。collectionPeople.collection

それらはあなたの問題の基本です。あなたのクラスとあなたがしようとしていることとの関連性を完全には理解していないので、現時点ではこれ以上説明しません。

于 2013-07-01T00:15:08.097 に答える