2017-03-15 1 views
0

I 여기에서 캔버스 게이지를 사용하고 canvas-gauges.com (루프 미도시)은 다음과 같이 I 루프 동적 다중 게이지를 생성캔버스 게이지 동적 오브젝트 갱신 값

;

<canvas id="canvas_<?php echo $device_pk; ?>"></canvas> 

<script type="text/javascript"> 
    var gg = "gauge_" + "<?php echo $device_pk; ?>"; 
    this[gg] = new RadialGauge({ 
     renderTo: 'canvas_<?php echo $device_pk; ?>', 
     height: 200, 
     .....other properties here..... 
    }).draw(); 
</script> 

게이지를 올바르게 표시합니다.

다음은 javascript/ajax를 사용하여 계기 값을 업데이트하려고합니다. 아약스, 나는 각/모든 $의 device_pk 값을 게시하고 반환 된 결과는 나에게 콘솔에서 올바른 'K'와 'v'info을 보여줍니다 그때

success : function(result) { 
    var data = $.parseJSON(result); 
    $.each(data, function (k,v) { 
     console.log(k + ' is ' + v); 
     //k.value = v; 
     //k.value = Number(v); 
     k['value']= Number(v); 
    }); 
}, 

{"gauge_8":"22.3","gauge_12":"0","gauge_15":"-5"}로 포맷 된 JSON 문자열입니다 로그. 내가 해결할 수없는 것은 데이터 값 'v'로 'k'라는 게이지를 업데이트하는 방법입니다. 이것은 일반적으로 생성 된 게이지가 'gauge_23'이라는 조건에서 gauge_23.value = 10.2;을 사용하여 수행됩니다.

그냥 테스트하기 위해 게이지의 올바른 게이지 이름을 확인하고 gauge_23.value = 10.2;에 일시적으로 하드 코딩하여 버튼 클릭으로 발생시키고 게이지를 작동하고 업데이트합니다.

동적으로 생성 된 계기 개체를 업데이트하려고 시도하는 방식으로 문제가 발생했는지 또는 개체를 만드는 방식과 관련하여 문제가 발생했는지는 확실하지만 포기했습니다.

답변

0

대답을 추측 할 수 있도록 모든 코드가 없기 때문에 대답을 알기가 어렵습니다.

귀하의 설정 코드

<script type="text/javascript"> 
    var gg = "gauge_" + "<?php echo $device_pk; ?>"; 
    this[gg] = new RadialGauge({ 
     renderTo: 'canvas_<?php echo $device_pk; ?>', 
     height: 200, 
     .....other properties here..... 
    }).draw(); 
</script> 

당신은 객체 this 게이지 객체에 대한 참조의 재산 gauge_23을 할당한다. 이 창은 다음 this 답변

의 하단에 어떤 개체를 사용하는 올바른 범위가 아닌 경우 따라서이

window["gauge_" + "<?php echo $device_pk; ?>"] = new RadialGauge({ 
     renderTo: 'canvas_<?php echo $device_pk; ?>', 
     height: 200, 
     .....other properties here..... 
    }).draw(); 

을하고 창을

입니다 전역 범위를 참조 것 같이 읽기

당신은 콘솔 로그 출력 파 경우 "gauge_23는 10"

success : function(result) { 
    var data = $.parseJSON(result); 
    $.each(data, function (k,v) { 
     console.log(k + ' is ' + v); 
     k['value']= Number(v); 
    }); 
}, 

말을 당신이 다운로드 한 데이터에서 게이지를 설정할 때 그런 당신이 sed json 객체는 k이 문자열이라는 것을 의미하는 {guage_23 : "10"}입니다. 문자열 kvalue 속성을 추가하고 10을 할당합니다. 당신의 설정 코드는

$.each(data, function (k,v) { 
     window[k].value = Number(v); // window or whatever the this was 
    }); 

에 코드를 변경할 수있는 계기가 윈도우의 특성이 있다는 glbal 범위에서 실행되는 것을 가정

난 당신이 값을 설정 한 후 게이지를 업데이트해야합니다 생각하지만 난 것 너 한테 맡겨라.

+0

안녕하세요 @ Blindman67, 당신의 '추측에 감사드립니다. 완벽하게 작동합니다. 게이지를 업데이트하는 실제 명령은'gauge_name.value = number'입니다. 우수한! – gjt211