我正在使用jquery float,偶然发现了一个我无法弄清楚的函数(控制台日志是我的):
function getOrCreateAxis(axes, number) {
console.log(" ");
console.log("getOrCreateAxis starting vars:");
console.log("Axes:");
console.log(axes);
console.log("Axes -1:");
console.log(axes[number-1]);
console.log("Xaxes:");
console.log(xaxes);
console.log("options are:");
console.log(options);
if (!axes[number - 1])
axes[number - 1] = {
n: number, // save the number for future reference
direction: axes == xaxes ? "x" : "y",
options: $.extend(true, {}, axes == xaxes ? options.xaxis : options.yaxis)
};
console.log("We're done in getOrCreateAxis, axes are:" + (axes == xaxes ? "x" : "y"));
console.log(axes);
console.log(" ");
return axes[number - 1];
}
据我所知,它接收一个空数组,检查是否存在某个索引,如果不存在,它会在该索引处创建具有属性“n”,“direction”和“options”的新对象(从另一个数组合并) )。
我无法弄清楚除了上面三个以外的所有其他属性来自哪里,当你在console.log中的轴数组:
据我所知,有一种构造函数在使用其他属性填充对象时自动踢,但我无法弄清楚它来自何处或如何触发。完整的Jquery Flot代码可用here,我正在努力的功能是980行。
问题可能有点抽象,但我觉得迷失在这里,因为我甚至不知道我在找什么,技术上。什么是创建其他属性,哪里可以阅读更多相关信息?
答案 0 :(得分:0)
在您粘贴的函数(getOrCreateAxis()
)中未添加刻度 - 它也会在Initialization阶段发生,但稍后会在setupGrid()
函数中发生:
// initialize
initPlugins(plot);
parseOptions(options_);
setupCanvases();
setData(data_);
setupGrid();
draw();
bindEvents();
如果您跟踪setupGrid()
,您会注意到calls the function you're looking for - setTicks()
,line 1823中声明了它:
function setTicks(axis) {
var oticks = axis.options.ticks, ticks = [];
if (oticks == null || (typeof oticks == "number" && oticks > 0))
ticks = axis.tickGenerator(axis);
else if (oticks) {
if ($.isFunction(oticks))
// generate the ticks
ticks = oticks(axis);
else
ticks = oticks;
}
// clean up/labelify the supplied ticks, copy them over
var i, v;
axis.ticks = [];
for (i = 0; i < ticks.length; ++i) {
var label = null;
var t = ticks[i];
if (typeof t == "object") {
v = +t[0];
if (t.length > 1)
label = t[1];
}
else
v = +t;
if (label == null)
label = axis.tickFormatter(v, axis);
if (!isNaN(v))
axis.ticks.push({ v: v, label: label });
}
}