如何做到这一点?我搜索了Stack Overflow,找到了一个类似的结果,但它不起作用。
这是我的代码:
var Player = Backbone.Model.extend({
defaults: {
//some variables
},
//creating audio element
setAudio: function(ogglink, mp3link){
//code, that works
}
});
var Playlist = Backbone.Collection.extend({
model: Player
});
var MyPlaylist = new Playlist([
//some songs here
]);
var OneSongView = Backbone.View.extend({
//added some 'template' and 'el' code
initialize: function () {
this.model.bind("change", this.render, this);
},
render: function (eventName) {
$(this.el).html(this.template(this.model.toJSON()));
this.model.setAudio(this.model.get("ogglink"), this.model.get("mp3link"));
return this;
},
events: {
//declaration of some events
},
//event functions
});
var AppRouter = Backbone.Router.extend({
//router code
});
var app = new AppRouter();
Backbone.history.start();
如果我添加类似timeupdate
:somefunc
的事件,它将不起作用,如果我添加像这里这样的代码,我将出现错误:(
所有Backbone.View
事件处理程序都委派给视图的el
。这意味着,在处理程序捕捉到视图内部激发的任何事件之前,它们必须冒泡/传播到其el
。
不幸的是,HTML5音频和视频元素不像大多数其他元素那样通过DOM向上传播它们的事件。处理这些事件的唯一方法是在<audio>
元素插入DOM后直接向其添加eventListener。