2015-01-06 7 views
1

Asp.Net MVC ScriptBundle 내의 각 파일에 대해 jQuery .ready() 이벤트를 여러 번 호출하지 않으려면 전체 번들 주위에 준비 이벤트를 래핑 할 수 있습니까? 다음 파일의Asp.Net MVC의 ScriptBundle 주위에 단일 jQuery 문서 준비 이벤트를 래핑하는 것이 가능합니까?

각각 포함 $ 나는 두 JS 파일을 만들 수 있습니다

bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js", "~/Scripts/core.js", "~/Scripts/application.js", "~/Scripts/controls.js", "~/Scripts/custom.js")); 

(문서) .ready (() 함수 내에서 자바 스크립트 코드 주위에 {}
코드 ..., 하나 포함 (문서) .ready (() 함수는 {, 그냥 닫는 괄호를 포함하는 다른. 그런 다음 시작과 기존 번들의 끝이 파일을 추가 할 수 있지만 더 나은 방법이있다?

A similar question이있다 $ CoffeScript 연결을 요청했습니다. 그러나이 솔루션을 Asp.Net 번들로 쉽게 변환 할 수는 없습니다.

+1

당신에 다음 한이 모든 페이지에서 실행되는 것 경우를 필요로하거나 _Layout 페이지에서 모든 페이지에 다음, 모든 파일에 대해 위의 작업을 수행 단순히 그렇게 할 수는 없습니다. 귀하는 JS에서 모듈 패턴을 사용해야합니다. –

답변

2

작성한 JavaScript 파일 (jquery-{version}.js 아님)을보고있는 경우 페이지에서 호출하는 파일 외부에서 공개적으로 액세스 할 수있는 방법을 만드십시오.

var Application = (function() { 
    // All your code 

    function init() { 
     // All your code that you have inside $(document).ready() 
    } 

    return { 
     init: init 
    }; 
}()); 

은 바닥

<script type="text/javascript"> 
    $(document).ready(function() { 
     Application.init(); 
     // etc for the other files. 
    }); 
</script> 
+0

감사합니다. 이 접근법은 좋아 보인다. – Andrew

+0

이 방법은 해당 파일 내의 다른 모든 항목의 범위를 닫습니다. 따라서 파일 외부에서 액세스하려는 파일에 뭔가가 있으면 init과 같이'return' 블록에 추가해야합니다. 글로벌 공간에서 차지하는 공간을 최소화하는 것은 좋은 습관입니다. – krillgar

+0

자바 스크립트 모듈 패턴이 맞습니까? 속도를 높이기 위해 권장하는 온라인 자습서가 있습니까? 게시 할 시간이 없으면 지금까지 귀하의 도움에 대해 이해하고 감사드립니다. – Andrew