WinJS 응용 프로그램 (C#/XAML이 아닌 HTML/JS를 사용하는 Windows 8.1 응용 프로그램)이 있습니다.WinJS에서 페이지를 다시로드하면 이벤트 처리기가 연결되지 않습니다.
default.html
에 맞춤형 탐색 바를 구현했으며 일부 버튼에는 클릭 이벤트 리스너가 첨부되어 있습니다. 각 처리기는 탐색 버튼에 해당하는 페이지의 URL로 nav.navigate()
을 호출합니다.
내 페이지 중 하나 (/pages/myPage/myPage.html
)에 여러 개의 버튼이 있습니다. 각 버튼에는 페이지의 ready
함수에 바인딩 된 클릭 이벤트 리스너가 있습니다. 여러 페이지 사이를 탐색 할 때 잘 작동합니다.
그러나 myPage
(작업 버튼 클릭 핸들러 사용)에있는 경우 다시 myPage
의 탐색 바 버튼을 클릭하면 페이지가 다시로드되는 것처럼 보입니다. ready
함수가 호출 된 것 같습니다 (예 : console.log 문이 실행 됨). 페이지의 버튼이 클릭 핸들러를 완전히 잃어 버리는 것처럼 보입니다.
다른 페이지로 이동 한 다음 뒤로 이동하면 단추가 제대로 작동합니다. 하지만 내가 무엇을 하든지 페이지 자체를 탐색하여 페이지를 다시로드 (nav.navigate("/pages/myPage/myPage.html")
에있는 동안 myPage
)하면 클릭 핸들러가 손실됩니다.
왜 이런 일이 발생합니까? 내 ready
함수가 호출되었지만 클릭 핸들러가 다시 연결되지 않습니다.
myPageNavButton.addEventListener("click", function() {
nav.navigate('/pages/myPage/myPage.html');
});
아, 감사합니다! 그것은 그것을 완전히 설명합니다. 이 변경으로 인해 WinJS 2가 된 이유는 무엇입니까? 상당히 직관력이없는 것처럼 보입니다 (예전의 행동은 훨씬 논리적으로 의미가 있습니다). –
왜 변경되었는지 (아마도 다른 종류의 최적화 및 코드 구조). 어쨌든 WinJS는 오픈 소스이기 때문에 풀 요청이 충분하다면 다시 바뀔 수도 있습니다. –
WinJS 저장소에 문제를 제출했습니다. 논리적 인 동작을 확인하는 데 관심이있는 사람은 누구나 방문 할 수 있습니다. https://github.com/winjs/winjs/issues/321 –