2014-11-25 8 views
0

먼저 MVC WebAPI 프로젝트를 사용하고 있습니다. 내 스크립트는 번들 구성에서 구성한 다음 페이지 (Index.cshtml)에서 렌더링합니다. 위젯 팩토리를 사용하여 JQuery 위젯을 만들려고합니다. 내가 번들 렌더링Jquery 위젯이 정의되지 않았습니다.

$.widget("custom.test", { 
    options: { 
     value: 0 
    }, 
    _create: function() { 
     this.options.value = this._constrain(this.options.value); 
     this.element.addClass("test"); 
     this.refresh(); 
    }, 
    _setOption: function (key, value) { 
     if (key === "value") { 
      value = this._constrain(value); 
     } 
     this._super(key, value); 
    }, 
    _setOptions: function (options) { 
     this._super(options); 
     this.refresh(); 
    }, 
    refresh: function() { 
     var testVal = this.options.value + "%"; 
     this.element.text(testVal); 
     if (this.options.value == 100) { 
      this._trigger("complete", null, { value: 100 }); 
     } 
    }, 
    _constrain: function (value) { 
     if (value > 100) { 
      value = 100; 
     } 
     if (value < 0) { 
      value = 0; 
     } 
     return value; 
    }, 
    _destroy: function() { 
     this.element 
      .removeClass("test") 
      .text(""); 
    } 
}); 

색인 파일에서 : :이 내용에 자바 스크립트 파일 '테스트'생성 한 파일의 머리에

@Scripts.Render("~/bundles/jquery") 
     @Scripts.Render("~/bundles/jqueryui") 
@Scripts.Render("~/bundles/lib") 

를 (참고 : 내 위젯 스크립트 파일입니다 lib 번들에 있음). 그런 다음, 렌더링 코드 후, 나는 스크립트 태그를 추가하고이 추가 : 나는 코드 작품의 적어도 일부를 알 수 있도록 다른 코드는이 스크립트 태그에 있습니다

<script> 
      $(function() { 
       //OTHER CODE 

       var test = $("<div></div>") 
        .appendTo("body") 
        .test(); 

       test.option("value", 50); 

       alert(test.options.value); 
      }); 

     </script> 

. 이제 페이지를로드 할 때 오류가 발생합니다 (코드의 $ .widget ("custom.test", ...) 부분). "Uncaught TypeError : undefined가 함수가 아닙니다.". 나는 소스를 볼 때 javascript 파일이 올바른 순서로 포함되어 있다는 것을 알 수 있습니다.

왜 이런 일이 일어나고 어떻게 해결할 수 있는지 전혀 알지 못합니까?

편집

나는 위젯의 정보에 액세스하려고 시도하는 상황을 구문 문제가 발생했습니다. 적절한 코드는 다음과 같습니다

  var something = $(".test").colorize(); 
      something.colorize("option", "value", 100); 
      var test = something.colorize("option", "value"); 
      alert(test); 

      something.colorize("random"); 
      alert(something.colorize("option", "red")); 
+0

번들링없이 모두 작동합니까? – OJay

+0

아니요. 나는 여기서 어디로 가야할지 모르겠다. –

+1

다음은 번들링과 관련이 없으며 코드의 오류입니다. JS unbundled and unminified를 포함하고 (Visual Studio를 사용한다고 가정), IE (IE 여야 함)를 사용하여 위젯 생성에 중단 점을 넣고 오류가 발생할 때까지 코드를 단계별로 실행하십시오. 'undefined is not function'은 널 (null) 인 객체에 대해 메소드를 실행하려고 시도했을 때 발생하는 에러 일 것입니다. 어느 것이 든 하나를 찾아야합니다 ... 아니면'alert '또는'console.log'를 코드를 작성하고 오류가 발생한 위치를 정확하게 찾으십시오. 또한 VS는 JS 파일 (JS 파일)에서 JS를 디버그합니다. – OJay

답변

0

당신이 자바 스크립트 파일을 연결하는 경우, 그들은 단지 (jQuery)(jQuery);로 끝나는하지 있는지 확인하십시오 - 당신의 번들 JS가 축소 된 있지 않은 경우 세미콜론에게

주의 - 행 번호를 잡히지 않은 타입 오류는 당신에게 이것을 인도해야합니다.

(이 경우는 개발자가 파일을 결합하는 시간의 99 %입니다.)

+0

나는 연결하지 않을 것이다. 번들은 HTML에 스크립트 태그를 씁니다. –

+0

줄 번호가 있습니까? 그 줄 번호는 뭐야? 스택 추적을 위해 확장 할 수 있습니까? – elzi

관련 문제