2014-08-30 3 views
2

내 유성 앱이 데스크톱에서 예상대로 작동하지만 경로를 변경할 때 불필요한 전체 페이지 새로 고침으로 인해 모바일 사용이 느립니다.유성 : 철로가있는 새로운 경로를 탐색 할 때 모바일에서만 전체 페이지 새로 고침

저는 "에뮬레이트 터치 스크린"옵션과 모바일 크롬의 갤럭시 S4를 사용하는 Google 개발자 도구에서 내 응용 프로그램을 테스트했습니다. Iron-Router를 트리거하는 버튼이나 링크를 클릭하여 새 경로로 이동하면 템플릿이 포함 된 하나의 출력 (예 : 머리글과 바닥 글이 태그와 함께 다시로드됩니다. 전체 페이지) 대신 전체 페이지가 새로 고침됩니다. 어떤 일이 일어나야하고 "터치 스크린 에뮬레이션"옵션이 활성화되어 있지 않고 버튼과 링크를 클릭했을 때 데스크탑에서 일어나는 일은 {{> 출력}}에서 매우 빠른 템플리트 전환으로 인한 정상적인 동작입니다. 나머지 페이지는 예상대로 새로 고쳐지지 않습니다. 나는 "터치 스크린 에뮬레이션"옵션이 활성화되어있을 때 터치 시작 이벤트가 트리거 된 다음 클릭 이벤트가 발생하여 전체 페이지가 새로 고쳐지게된다는 것을 알고 있습니다.

문제의 원인과 해결 방법에 대한 의견이 있으십니까?

//makes the button clicked make the page go back 
'click .glyphicon-chevron-left' : function(e) { 
e.preventDefault(); 
history.back(); 
}; 


// when clicked goes to a preference page 
<a id='Preferences' href="{{pathFor 'pref'}}" data-toggle="collapse" data-target=".nav- collapse"> Preferences </a> 

다음 패키지 유성 버전 0.9.0.1을 사용 :

일부 예제 코드는 다음과 불안 표준 앱 패키지 철 - 라우터 스핀 철 - 라우터 진행 단일 페이지 로그인 계정-UI 계정 비밀번호 애니메이션 - CSS 유성 natestrauser : 연결 배너 mizzao : 부트 스트랩-3

편집 : 비 패키지 관련 타사 자바 스크립트 파일로 인해 오류가 발생했습니다. 문제의 구체적인 원인을 파악할 수 있으면 추가로 업데이트됩니다.

+0

당신이 철 - 라우터 progress''해제하고 로딩 템플릿을 설정하면 이봐, 무슨 일이? –

+0

@NathanM 방금 철제 라우터 진행 상황을 제거했습니다. 이미 로딩 템플릿 세트가 있었는데, 실제로로드되기 전에 데스크톱 브라우저에서 로딩 템플릿을 잠깐 보았습니다. 전에는 전혀 보지 못했습니다. 그러나 문제를 해결하지 못했습니다. 여전히 전체 페이지를 다시로드합니다. 이제는 재로드시 로딩 템플릿이 실행되기 전에 단일 페이지 로그인 플래시의 로그인 상자가 빠르게 표시됩니다. 다른 아이디어? 감사. – Zleman1593

+0

나는 또한 'single-page-login'을 제거했으나 로그인 상자의 플래시가 대신 스핀 템플릿의 더 긴 기간으로 대체되었습니다. 따라서 '단일 페이지 로그인'으로 인해 문제가 발생하지 않으며이를 다시 추가 할 것입니다. 어떤 이유로 든 터치 시작 이벤트 (코드에서 사용하지 않음)로 인해 전체 페이지가 다시로드됩니다. – Zleman1593

답변

0

나는 동일한 문제가있었습니다. 그냥 삭제했습니다 axw:ratchet 패키지

2

이 문제를 해결했습니다.

Template.back.events({ 
     'click #back': function (evt) { 
      window.history.back(); 
      evt.preventDefault(); 
     }, 
     'touchstart #back': function() { 
      window.history.back(); 
      evt.preventDefault(); 
     } 
    }); 

Template.layout.events({ 
    'touchstart a': function (evt) { 
     console.log(evt); 
     evt.preventDefault(); 
     Router.go($(evt.currentTarget).attr('href')); 
     return false 
    } 
});