backbone.js 为什么< HTMLAudioElement>没有'set'方法

chhqkbe1  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(141)

我的代码如下,当我运行它时,它显示错误-<HTMLAudioElement>没有方法'set'。为什么会发生这种情况?我已经将我的函数绑定到模型,但它似乎工作错误:

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);
    }
});
2o7dmzc5

2o7dmzc51#

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

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

或者

_.bindAll(this);

或者

_.bindAll(this, 'ontimeupdate', 'onprogress');
niwlg2el

niwlg2el2#

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

ontimeupdate: function() {
    this.set("curtime", this.audiotag.currentTime);
}

相关问题