下面我有一个Collection,它从RESTful API中获取消息列表。 (我选择了一个Collection,因为它最终会存储已解析的数据。)
我的视图设置为监视集合中的更改(即收到新消息时)。但是,在存储新数据时,Collection似乎不会触发更改或设置事件。我之前和之后都记录了Collection,以确认其results属性已更改。
几个问题:
感谢您的帮助!
集合
var AllMessages = Backbone.Collection.extend({
model: Message,
url: 'http://arestfulapi.com',
fetchMessages: function(){
var that = this;
this.fetch({
data: {
'order': '-createdAt',
'limit': 10
},
success: function(model, data){
// we want the array in data.results
that.set(data.results) // this should trigger a change event ?
}
});
}
});
查看
var MessageViewer = Backbone.View.extend({
initialize: function(){
this.collection.on('change',this.log,this); // does not get called from above
},
log: function(e){
console.log('triggered');
}
});
实例化
var allMessages = new AllMessages();
var messageViewer = new MessageViewer({collection:allMessages});
答案 0 :(得分:6)
解决:
根据Backbone.js Catalog of Events:
因为此集合已将模型添加到现有属性(“模型”),而不是更改属性,会触发“添加”事件。初始'models'属性包含空数组与此无关。