2013-12-11 3 views
0

Durandal View에서 ComponentOne의 Wijmo 차트 컨트롤을 사용하려고합니다.Durandal Wijmo 호

모듈 js에서 '연결된'이벤트에 차트 컨트롤을로드하려고합니다. 오류가 분명히 대부분의 아마 Durandal는 전에 연결된 이벤트를 제기되면, Wijmo 컨트롤의 스크립트에서 던진 것으로 보인다

Uncaught TypeError: Cannot read property 'startX' of undefined jquery.wijmo-pro.all.3.20132.9.min.js:26 
(anonymous function)jquery.wijmo-pro.all.3.20132.9.min.js:26 
jQuery.event.dispatchjquery-1.9.1.js:3074 
elemData.handlejquery-1.9.1.js:2750 

비록 : 차트 컨트롤이 렌더링되지 않지만 대신 다음과 같은 오류가 발생되고있는 것으로 보인다 보기가 표시됩니다. 즉, 초기화하는 동안 DOM에 레이아웃이 없습니다. 다음은

내가 바닐라 Durandal 스타터 키트의 플리커 모듈을 실행하고 코드입니다 :

attached: function() { 
      $(document).ready(function() { 
       $("#wijpiechart").wijpiechart({ 
        radius: 140, 
        hint: { 
         content: function() { 
          return this.data.label + " : " + Globalize.format(this.value/this.total, "p2"); 
         } 
        }, 
        header: { 
         text: "Steam Mac Hardware Survey" 
        }, 
        seriesList: [{ 
         label: "MacBook Pro", 
         data: 46.78, 
         offset: 15 
        }, { 
         label: "iMac", 
         data: 23.18, 
         offset: 0 
        }, { 
         label: "MacBook", 
         data: 20.25, 
         offset: 0 
        }, { 
         label: "Mac Pro", 
         data: 5.41, 
         offset: 0 
        }, { 
         label: "Mac Mini", 
         data: 3.44, 
         offset: 0 
        }], 
        seriesStyles: [{ 
         fill: "180-rgb(195,255,0)-rgb(175,229,0)", 
         stroke: "rgb(175,229,0)", 
         "stroke-width": 1.5 
        }, { 
         fill: "90-rgb(142,222,67)-rgb(127,199,60)", 
         stroke: "rgb(127,199,60)", 
         "stroke-width": 1.5 
        }, { 
         fill: "90-rgb(106,171,167)-rgb(95,153,150)", 
         stroke: "rgb(95,153,150)", 
         "stroke-width": 1.5 
        }, { 
         fill: "90-rgb(70,106,133)-rgb(62,95,119)", 
         stroke: "rgb(62,95,119)", 
         "stroke-width": 1.5 
        }, { 
         fill: "90-rgb(166,166,166)-rgb(149,149,149)", 
         stroke: "rgb(149,149,149)", 
         "stroke-width": 1.5 
        }] 
       });  
      }); 
     } 

간단한 수정 지연으로 위의 코드 후 컨트롤을 다시 그려야하는 것입니다 :

setTimeout(function() { 
        $("#wijpiechart").wijpiechart("redraw"); 
       }, 100); 

그러나 이것은 아마도 우아한 해결책이 아닙니다.

보기가 표시된 후 이러한 종류의 컨트롤 그리기를 처리하는 다른 이벤트가 Durandal에 있습니까?

답변

1

최신 2.1에서 다루었습니다. Durandal의 지점. 다음은 @EisenbergEffect의 견적입니다. https://github.com/BlueSpire/Durandal/issues/406#issuecomment-30340696

Ok. 먼저 Branch-Version 2.1.0에서 최신 코드를 가져옵니다. I 은 첨부 된 콜백에서 요소를 깨고있는 입구 전환에 대한 버그 수정을 푸시했습니다. 업데이트 한 후 코드를 다시 시도하고 문제가 해결되는지 알려주십시오.

또한 jQuery의 문서를 Durandal 내에 사용할 필요가 없습니다. Durandal은 준비가 끝날 때까지는 앱 코드를 실행하지 않습니다. 따라서 걱정할 필요가 없습니다.