骨干侦听器事件无法正常工作

ver*_*ndy 0 events bind backbone.js

我有两个人和团队.

如果在People系列中添加了一个人,我希望Teams系列能够收听.

但是,我不断收到此错误:未捕获TypeError:无法读取未定义的属性'_listenerId'

也许我误解了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")

            }

        });
Run Code Online (Sandbox Code Playgroud)

Loa*_*oof 5

你确实误解了听众的工作方式.你应该特别听一些对象(即一个类的实例).

这里Backbone尝试访问Backbone对象的私有属性listenerId来做一些内部绑定的东西.在你的情况下,它试图得到People.collection._listenerId.People是你的类,它没有任何collection属性,所以People.collection是未定义的,因此你的错误.

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