0

我有两个集合 People 和 Teams。

如果有人添加到“人员”集合中,我希望 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是你的类,它没有任何collection属性,所以People.collection是未定义的,因此你的错误。

这些是您问题的基础。还没有完全理解你的课程和你想要做的事情之间的联系,我现在不会再进一步​​了。

于 2013-07-01T00:15:08.097 回答