我是Backbone的新手。这是我的问题。我有一个歌曲列表的集合和该列表中当前播放歌曲的索引。代码如下:
var songCollection = Backbone.Collection.extend({
initialize: function(){
...
this.index = 0;
...
},
...
getNextSong:function(){
...
this.index++;
...
}
})
并且有一个视图显示当前播放歌曲的内容。我想在当前播放歌曲改变时更新视图信息。下面的代码在视图中不起作用。
var view = Backbone.View.extend({
initialize:function(options){
this.options.on('change:index', this.render, this);
}
)}
也不是
this.listenTo(...);
有人能说出解决方法吗?
答案 0 :(得分:0)
“更改:[属性]”(模型,值,选项) - 更新特定属性时 - Events-catalog
更改事件是针对模型attributes
哈希内部的更改触发的,据我所知,更改集合的随机属性不会触发任何事件。
你最好在模型的属性中有一个类似isPlaying
的标志,然后从视图中收听它对集合的更改。
var songModel = Backbone.Model.extend({
defaults: {
isPlaying: false
}
});
var songCollection = Backbone.Collection.extend({
model: songModel
});
var view = Backbone.View.extend({
initialize: function(options) {
this.listenTo(this.collection, 'change:isPlaying', this.render);
},
render: function(model, value, options) {
if(value){
//---------------^ this is the playing song, render it
}
}
});