2016-08-03 5 views
0

MVC 5 프로젝트에서 작업 중입니다. 이 특정 페이지는 부분적인 페이지 (면도기)입니다.

ddchart jQuery 라이브러리를 활용하려고합니다. 나는이 오류가 계속 (http://kiersimmons.com/ddchart/index.html) ...

Uncaught TypeError: $(...).ddBarChart is not a function 

오류가 일어나고 코드 줄은 여기에 있습니다 :

$("#chart_div_static").ddBarChart({ 
     chartDataLink: "~/Scripts/plugins/ddchart/Chart_Data.js?1=10", 
     action: 'init', 
     xOddClass: "ui-state-active", 
     xEvenClass: "ui-state-default", 
     yOddClass: "ui-state-active", 
     yEvenClass: "ui-state-default", 
     xWrapperClass: "ui-widget-content", 
     chartWrapperClass: "ui-widget-content", 
     chartBarClass: "ui-state-focus ui-corner-top", 
     chartBarHoverClass: "ui-state-highlight", 
     callBeforeLoad: function() { $('#loading-Notification_static').fadeIn(0); }, 
     callAfterLoad: function() { $('#loading-Notification_static').stop().fadeOut(0); }, 
     tooltipSettings: { extraClass: "ui-widget ui-widget-content ui-corner-all" } 
    }); 

나는 함수의 존재 여부를 확인하고 JS에 대한 참조 (함수가 들어있는 파일)가 ddBarChart가 호출되기 전에 배치됩니다. 참고로 레퍼런스는 테스트로

<script src="~/Scripts/plugins/ddchart/jquery.ddchart.js"></script> 

....입니다 : 내 jquery.ddchart.js이 파일에서 나는 심지어 단순히 경고를 팝업 테스트() 함수를했다. 이 함수는 ddBarChart 함수 앞에 줄에 썼습니다. 테스트 함수를 호출하면 제대로 작동합니다. 그래서 외부 js 파일 (jquery.ddchart.js)에 대한 참조가 올바른지 알고 있습니다.

**** 업데이트 **** 참고로

다음 ddBarChart 함수는 외부 파일에,

jQuery.fn.ddBarChart = function(options) { 
     function setupDrillDown(strID, intDelay, strH, strW, strL) { 
      $(strID+ "> .ddchart-chart-final").css("z-index","2"); 
       : 
       : 
     } 

     function aniDrillDown(strID,intDelay) { 
      $(strID+ " > .ddchart-chart-final > .ddchart-chart-wrapper-sub").animate({width: "100%",height: "100%",left: "0%"}, intDelay-500, function(){aniCleanUp(strID)}); 
     } 
       : 
       : 

**** 업데이트주의 *** ...로 시작합니다 * (차이점은 MVC 5 부분 페이지 (면도칼)입니다. 다른 프로젝트에서 일반적인 부분이 아닌 페이지를 만들 때 작동하는 것으로 보입니다.)

어떤 아이디어일까요? 감사!

+0

이것은'$ (document) .ready()'안에 있습니까? 그리고 만약 그렇다면'$ (window) .on ("load", function() {}); – Santi

+0

답장을 보내 주셔서 감사합니다. @TylerRoper ... $ (document) .ready() 내에 없습니다 – WebDevGuy2

+0

document.ready에 코드를 넣으려고했지만 그 중 하나가 작동하지 않았습니다. 이상한 점은 테스트 기능 (간단한 경고 포함)이 완벽하게 작동한다는 것입니다. 같은 위치에있어. (또한 MVC 5 부분 페이지 (면도기), 그 차이가있는 경우. 다른 프로젝트에서 일반 non-partial 페이지를 만들 때 작동하는 것으로 보입니다.) – WebDevGuy2

답변

1

이전과 같은 문제가 발생했습니다. 문제는 jQuery 라이브러리가 두 번 포함되었다는 것입니다.

는 다음과 같은 순서로 일어난

  • HTML 파일은 jQuery 오브젝트를 정의, JQuery와 파일을로드.
  • HTML 파일
  • 는 HTML 파일을 jQuery 오브젝트를 다시 정의, JQuery와 파일을로드 jQuery.fn
  • 에 함수를 연결, 플러그인 파일을로드.

이후에는 jQuery에 대한 참조가 새로 정의 된 jQuery 객체에 적용됩니다.이 객체에는 플러그인 기능이 연결되지 않습니다.

부분보기에서 포함될 때만 실패 할 수 있습니다. jQuery 소스가 포함 된 후에 만 ​​플러그인이 포함되어 있는지 확인해야합니다.

+0

내 부분보기 jQuery의 이전 버전을 사용하고 있기 때문에 매우 흥미 롭습니다. "부모"보기.하지만 ddBarChart 함수 바로 전에 정의 된 외부 파일 작동 파일의 test() 함수. 또한 ddBarChart 함수를 "함수 ddB"로 정의 된 "일반"함수로 변경해 보았습니다. "jQuery.fn.ddBarChart = function (options) {"대신 arChart (options) { "를 사용하십시오. 그러나 여전히 같은 문제입니다. – WebDevGuy2

+1

@ WebDevGuy2 동일한 렌더링 페이지에 두 가지 버전의 jQuery를 사용하려고합니다. 하나의 전역'jQuery' 객체가 있다는 것을 이해하십시오. 대부분 'ddBarChart'를 호출 할 때, 당신은'newer' 버전에서 그것을 호출하지만, 당신은'older' 버전에 플러그인을 첨부했습니다. –

+0

그게 문제라고 생각합니다. 렌더링 된 페이지에서 View Source를 수행 할 때 jQuery에 대한 참조가 두 가지 이상 표시됩니다. 그게다고 생각하니? 이러한 유형의 참조를 부분 페이지에서 상위 페이지로 이동하는 것이 더 나은 방법입니까? – WebDevGuy2

관련 문제