jQuery Knob上的覆盖单元在页面重新加载时无法正确重绘
我有一个只读的jQuery旋钮。 我已经能够将单位添加到数字显示中(根据如何使用Jquery旋钮显示单位 ),但重新加载页面时不再显示表盘的前景(即图形值指示器)。
这是我的HTML:
( {{ workload }}
是一个浮点Django模板值 – 它被正确替换)
在我的jQuery ready函数中,我有:
if (jQuery().knob && ! App.isIE8()) { // Workload Indicator $(".knob").knob({ 'dynamicDraw': true, 'min': 0, 'max':100, 'thickness': 0.2, 'tickColorizeValues': true, 'readOnly': true, 'skin': 'tron', 'fgColor': '#F00', 'inputColor':'#3D3D3D', 'bgColor': '#3D3D3D', 'width' : 150, 'draw' : function () { $(this.i).val( parseInt(this.cv) + '%'); } }); }
fgColor
最初是从模板值设置的,但上面的代码与硬编码的fgColor
产生相同的结果。
注释draw
回调按预期工作:旋钮绘制完成,中间有一个数值,外弧上有一个红色指示。 取消注释draw
可修复数字格式(无小数点+百分号)。 数字格式对于初始显示和重新加载仍然是正确的。 但是红色弧只出现在初始显示屏上 – 当页面重新加载时它会消失!
那么发生了什么? draw
是否超越了jquery-knob自己的canvas绘制方法? 如果是这样,我该如何调用图形绘制部分?
我能用这个:
$('.knob').val(0).trigger('change').trigger('draw');
这是Sally Maughan(不是这个教区)发给我的解决方案:
$(".knob").each( function () { this.value = Math.round( this.getAttribute('value') ); }).knob({ 'dynamicDraw': true, 'min': 0, 'max':100, 'thickness': 0.2, 'tickColorizeValues': true, 'readOnly': true, 'skin': 'tron', 'fgColor': wcol, 'inputColor':'#3D3D3D', 'bgColor': '#3D3D3D', 'width' : 150, 'draw' : function () { this.i.val( this.cv + '%'); } });
以上版本在每次重新加载时都使用HTML中的新值。 如果你想通过重新加载保持相同的值,那么Sally建议用以下代码替换this.value
赋值:
this.value = Math.round( this.value.replace('%','') );