1

Backbone의 확장 인 Parse JS 라이브러리를 사용하여 단일 페이지 웹 응용 프로그램을 만들고 있습니다.백본/구문 분석 응용 프로그램 : 첫 번째로드에서 링크가 작동하지 않습니다.

main.js의 끝에서
var AppRouter = Parse.Router.extend({ 
    routes: { 
     "": "signup", 
     "signup": "signup", 
     "login": "login", 
     "logout": "logout", 
     "dashboard": "dashboard", 
     "history": "history", 
     "account": "account" 
    }, 

    initialize: function(options) { 
    }, 

    login: function() { 
     this.navigateTo(new LoginView(), false); 
    }, 

    logout: function() { 
     Parse.User.logOut(); 
     Parse.history.navigate("signup", true); 
    }, 

    signup: function() { 
     this.navigateTo(new SignupView(), false); 
    }, 

    dashboard: function() { 
     this.navigateTo(new DashboardView(), true); 
    }, 

    history: function() { 
     this.navigateTo(new SentMailView(), true); 
    }, 

    account: function() { 
     this.navigateTo(new AccountView(), true); 
    }, 

    navigateTo: function(view, needsSignedIn) { 
     if (needsSignedIn && !Parse.User.current()) { 
     Parse.history.navigate("signup", true); 
     } else if (!needsSignedIn && Parse.User.current()) { 
     Parse.history.navigate("dashboard", true); 
     } else { 
     this.loadView(view); 
     } 
    }, 

    loadView: function(view) { 
     this.view && (this.view.close ? this.view.close() : delete this); 
     this.view = view; 
    } 
    }); 

, 내가보기에 새 라우터를 만들고, 참으로 pushState을 설정하고 있습니다 :

new AppRouter; 
new AppView; 
Parse.history.start({pushState: true}); 

을 다음과 같이

내 라우터 설정 내가 가지고있는 문제는 가끔 (종종 앱의 페이지를로드 할 때) 링크가 작동하지 않으며 페이지를 새로 고치는 것뿐입니다. 예를 들어 '/ history'링크를 클릭해도 기록 페이지가로드되지 않고 현재 페이지가 다시로드됩니다. 마찬가지로, js 호출을 시작하기로되어있는 부트 스트랩 드롭 다운 메뉴에 대한 링크를 클릭하면 현재 페이지가 다시로드됩니다. 일반적으로 새로 고침 버튼을 통해 브라우저를 새로 고침하면 모든 링크가 제대로 작동합니다.

왜 이런 일이 발생하는지 알고 싶습니다.

답변

0

고쳐졌습니다. 이 문제는 제대로 삭제되지 않은 기본보기로 인해 발생했습니다. 이보기에는 요소를 클릭하는 "클릭"이벤트에 바인딩 된 기능이 있습니다. 동일한 기능이 대시 보드보기의 모든 링크에서 클릭 이벤트에 바인딩되었지만 원하지 않는 이벤트였습니다.

관련 문제