우리는이 문제에 대한 아주 멋진 해결책을 생각해 내었습니다. 우리의 부분 뷰에서 참조되는 모든 스크립트는 그래서 클래스에 싸여있다 :
우리 layout.cshtml에서
Namespace.ClassName = function(){
function init(){
...
}
//Other Private methods go here.
init();// A call to the init function
}
우리는 모든 스크립트 파일에 대한 참조를 포함, 우리의 주요 스크립트 파일에 우리는 매핑 사전을 가지고 해시 태그를 사용하여 포인터를 함수화합니다 (우리는 해시 태그를 사용하여 아약스를 사용하여 사이트를 탐색합니다).
var dict = {};
dict["HashTag1"] = Namespace.ClassName;//A function pointer pointing to the script
//for this URL. Doesn't execute anything
dict["HashTag2"] = Namespace.ClassName1;
하나의 결함은 각 부분에 관련된 하나의 스크립트 파일 만있을 수 있다는 것입니다.
부분이 렌더링되는 컨테이너의 내용을 업데이트하는 함수에서 현재 스크립트 파일을 추적하고 두 개의 인수 데이터와 사용할 스크립트의 클래스 이름을 허용합니다. 그걸 말하지 호출 기능은 사전에서 스크립트의 이름을 가져옵니다 : 모든 스크립트가 부분보기 내부에 위의 지정된 형식이 될 필요가 참조 할 수로
var currentJSClass;
function UpdateContent(data,jsClass){
if (currentJSClass&& currentJSClass.dispose) {
currentJSClass.dispose(); //If the current class has a a dispose
//method, call it.
}
$("#partialContent").html(data);
if (jsClass) {
currentJSClass= new class();//Run the function we have
//pointed to
}
else {
currentJSClass= jsClass; //set the current class
}
}
여기에는 몇 가지 제한 사항이 있습니다, 그들은 처분이 있어야합니다 메서드를 사용하려면이 메서드를 사용하는 것이 좋지만 실제 부분 이외의 이벤트를 처리하고 구성하는 데는 좋은 프레임 워크를 사용한다고 생각합니다.
null로 설정 했습니까? 'window.onbeforeunload = null' – ahren
또는 정의되지 않음, 예. 그러나 우리는이 문장을 (다른 모든 js 파일이나 하나의 파일에) 어디에두고 다른 개발자가 윈도우에 이벤트를 추가 할 것인가에 대해 설명합니다. 어떻게 모두 정리되었는지 확인합니까? 거기에 대한 일종의 프레임 워크가 있나요? –