Backbone.js 为什么<;HTMLAudioElement>;没有方法';设置';
下面是我的代码,当我运行它时,它显示错误-Backbone.js 为什么<;HTMLAudioElement>;没有方法';设置';,backbone.js,dom-events,html5-audio,Backbone.js,Dom Events,Html5 Audio,下面是我的代码,当我运行它时,它显示错误-没有方法“set”。 为什么会这样?我已将函数绑定到模型,但它似乎工作错误: var Player = Backbone.Model.extend({ initialize: function(){ _.bind(this.ontimeupdate, this); _.bind(this.onprogress, this); }, setAudio: function(
没有方法“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);
}
});
与
bindAll
(在进行多个绑定时应使用该方法)不同,仅使用bind
(相当于ECMA的bind
方法)。所以
或
或
如果您要将这些方法绑定到
此
(您的播放器实例),那么您的ontimeupdate
方法可能更像这样:
ontimeupdate: function() {
this.set("curtime", this.audiotag.currentTime);
}
这样可以消除错误,但玩家现在做错了。当我点击play时,歌曲开始播放的时间只有3次我在询问之前就尝试过这种方式,问题是“this”不是播放器实例,它是播放器变量“audiotag”的内容。你需要实际将该实例绑定到@Loamhoof所说的方法:
.bindAll(this,'ontimeupdate','onprogress')
。那就行了。
_.bindAll(this);
_.bindAll(this, 'ontimeupdate', 'onprogress');
ontimeupdate: function() {
this.set("curtime", this.audiotag.currentTime);
}