我被这件事难住了。我有一个简单的骨干关系模型:
window.Site = Backbone.RelationalModel.extend({
idAttribute: "_id",
// These are the relations to the user model.
relations: [{
type: Backbone.HasMany,
key: 'users',
relatedModel: 'window.User'
}],
});
我的用户模型(与站点模型相关)如下所示:
//Site User model
// -------------
window.User = Backbone.RelationalModel.extend({
});
用户模型故意保持沉默,因为我仍在进行原型设计。
我从服务器收到的用于补充站点和用户的 JSON 如下所示:
{
_id: foo,
users: [
username: bar,
password: fizz
]}
我被难住的是听众。SiteView(呈现我的 SiteCollection)上的事件如下所示:
initialize: function() {
//basic bindings
this.model.bind('change', this.setSave, this);
this.model.bind('destroy', this.remove, this);
// bindings to sub-models
this.model.bind('add:users', this.setDetailsView, this);
this.model.bind('remove:users', this.setSave, this);
this.model.bind('change:users', this.setSave, this);
add:users
andremove:users
事件可以正常触发,但事件change:users
不会。在渲染我的用户模型的 DetailsView 中,我还有一些简单的事件绑定:
initialize: function() {
this.model.bind('change', this.render, this);
this.model.bind('destroy', this.remove, this);
但是,由于某种原因,change:users
SiteView 中的事件不会触发,而change
DetailsView 中的事件会触发。
这可能是因为:
- 用户模型上的
change
事件在两个不同的视图中绑定了两次? - 用户模型不是双向的?