Javascript变量闭包循环(通过插件选项)

时间:2015-11-30 00:21:47

标签: javascript jquery flot

所以我得到了jquery flot图表,它使用刻度格式化程序来正确显示我的值。

图形可以有多个轴并正确生成它我使用了一个包含格式化程序功能的循环。

format

格式化程序执行时undefinedundefined因此我的所有标签也显示为“", `Reason for Leave` = '" & Me.txtReason.Text & "'" &_ ”。

是否可以将我的变量传递给函数?

请注意:该函数在插件中调用,我希望不要编辑它,因为它是开源的。

2 个答案:

答案 0 :(得分:1)

使用另一个函数创建不同的刻度格式化程序,这样就可以获得每个格式字符串的闭包:

function getTickFormatter(format) {
    return function(val, axis) {
        return ValueToTime(Math.abs(val), format, true);
    };
}

for (var i = 0; i < axis.xaxis.length; i++) {
    var format = format || "HH:mm";

    var tickFormatter = getTickFormatter(format);

    myAxes.xaxis.push({
        tickFormatter: tickFormatter,
        tickSize: tickSize,
        position: thisPos || "left"
    });
}

有关闭包的更多信息,请参阅以下问题:

答案 1 :(得分:0)

所以似乎建议的唯一答案不能很好地运作......

Didn't Work So Well

然而,通过插件的选项传递我的格式变量是可行的。

for (var i = 0; i < axis.xaxis.length; i++) {
    var format = format || "HH:mm";

    var tickFormatter = function (val, axis) {
        return ValueToTime(Math.abs(val), axis.options.format, true);
    };

    myAxes.xaxis.push({
        tickFormatter: tickFormatter,
        tickSize: tickSize,
        format: format,
        position: thisPos || "left"
    });
}

This did work

我确实知道flot有'时间'格式,但这个功能非常有限,特别是当我的客户非常挑剔细节时。