0

怎么做?我搜索了 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,它将无法正常工作,如果我在此处添加代码,则会出现错误 :(

4

1 回答 1

2

所有Backbone.View事件处理程序都委托给视图的el. 这意味着在视图中触发的任何事件都必须冒泡/传播到它el,然后您的处理程序才能捕获它们。

不幸的是,HTML5 音频和视频元素不会像大多数其他元素那样通过 DOM 向上传播它们的事件。<audio>处理这些事件的唯一方法是在元素被插入 DOM 后直接将 eventListeners 添加到元素。

于 2013-06-03T18:57:52.717 回答