我正在尝试制作我的第一个非常小的框架/库。
我试着在SO上找到一个答案很长一段时间,但是我自己无法弄明白:( 该库工作正常,除非我在双击后尝试调用函数。处理点击的功能是在同一个原型上调用另一个。
所以这里是代码(它有点jQuery就像设计一样不能调用new运算符):
;(function(global, $){
"use strict";
var iSOT = function(divSelector, options){
return new iSOT.init(divSelector, options);
}
接下来是iSOT.init的原型:
iSOT.prototype = {
resetScale: function() {
diagramm.zoomed = false;
this.updateScale(diagramm.xAxis.initialRange);
},
updateScale: function(range) {
// some calculations here and then updating the DOM
},
doubleClick: function(event) {
var mouse = {}
// some not important calculation stuff
var positionHour = 12.42 // this value gets calculated in the lines before
if(!diagramm.zoomed) {
diagramm.zoomed = true;
this.updateScale([Math.round(positionHour)-6, Math.round(positionHour)+6]);
} else {
this.resetScale();
}
}
其次是iSOT.init部分
iSOT.init = function(divSelector, options) {
// lot of default settings here
this.theSVG.on("dblclick", this.doubleClick);
// more unimportant stuff
this.updateScale();
};
最后但并非最不重要的是设置Prototype并将iSOT置于全局上下文
iSOT.init.prototype = iSOT.prototype;
global.iSOT = iSOT;
}(window, jQuery));
如果我双击我得到“Uncaught TypeError:this.updateScale不是一个函数”(我不知道为什么)
您的任何专家都可以看一下,然后向我解释。
感谢您的帮助。
更新:
我可能正在寻找问题的轨道上。 doubleClick函数中的这个实际上是被单击的DOM元素。