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

时间:2013-06-30 23:43:41

标签: events backbone.js bind

我有两个人员和团队。

如果在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")

            }

        });

1 个答案:

答案 0 :(得分:5)

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

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

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