0

我的代码在下面,当我运行它时,它显示错误 -<HTMLAudioElement>没有方法“设置”。为什么会这样?我已经将我的函数绑定到模型,但它似乎工作错误:

var Player = Backbone.Model.extend({
    initialize: function(){         
        _.bind(this.ontimeupdate, this);
        _.bind(this.onprogress, this);
    },      
    setAudio: function(ogglink, mp3link, ontimeupdate){
        var el = document.createElement("audio");           
        el.addEventListener('timeupdate', this.ontimeupdate);
        this.audiotag = el;
    },      
    ontimeupdate: function() {
        this.set("curtime", this.currentTime);
    }
});
4

2 回答 2

1

bindAll(您应该在进行多次绑定时使用)不同,bind它只返回绑定的函数(相当于 ECMA 的bind方法)。所以...

this.ontimeupdate = _.bind(this.ontimeupdate, this);
this.onprogress = _.bind(this.onprogress, this);

或者

_.bindAll(this);

或者

_.bindAll(this, 'ontimeupdate', 'onprogress');
于 2013-06-04T19:14:05.273 回答
0

如果您将这些方法绑定到this(您的 Player 实例),那么您的ontimeupdate方法应该看起来更像这样:

ontimeupdate: function() {
    this.set("curtime", this.audiotag.currentTime);
}
于 2013-06-04T19:16:54.707 回答