我有两个人员和团队。
如果在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")
}
});
答案 0 :(得分:5)
你确实误解了听众的工作方式。你应该特别听一些对象(即一个类的实例)。
这里Backbone尝试访问Backbone对象listenerId
的私有属性来做一些内部绑定。在你的情况下,它试图获得People.collection._listenerId
。 People
是您的类,它没有任何collection
属性,因此People.collection
未定义,因此您的错误。
这些是您问题的基础知识。由于还没有完全理解你的课程与你想要做的事情之间的联系,我现在不会再进一步了。