2014-12-30 3 views
2

나는 handlebarsJS로 구동되는 SPA에 crossroadsJS와 hasherJS를 사용하고 있습니다. 돌이켜 보면 Ember에 모든 것을 내장해야했지만 아마 늦게 시작하는 것이 현명하지 않습니다.리프레쉬 hasherJS/crossroadsJS routes

나는 해시 라우트를 설정하여 클릭 한 내용에 따라 내 핸들 바 템플릿을 안팎으로 전환합니다. 나는 아무 문제없이 노선 사이에서 앞뒤로 움직일 수있다. 그러나 페이지를 새로 고치면 항상 내 #/home보기로 되돌아갑니다. 나는 창문에 대한 연구를 해왔다. 변화와 창. 언제 까지나. 그러나 이것들 중 어느 것도 문제를 해결하지 못하는 것 같다.

필자는 내 견해를 어떻게 처리하는지 매우 구체적인 방법을 가지고 있습니다. 나는 글로벌 뷰 객체과 같이 구성했다 : 나는 단순히 내가 통해 읽은 $(document).ready() 또는 $(window).onhashchange

에 해시 변화의 모든 유형 JQuery와 리스너를 추가 할 수 없기 때문에

views.procedures = function (template) { 

    this.initialize = function() { 
     this.el = $('<div/>'); 
     this.el.attr('id', 'procedures'); 
     this.el.on('click', '.returned-list li a', this.toResults); // list of API objects by name 
    }; 

    this.render = function() { 
     var parts = { 
      title: 'Procedures View', 
     }; 
     this.el.html(template(parts)); 
     return this; 
    }; 

    this.toResults = function() { 
     cache.justClicked = $(this).attr('data-id'); 

     crossroads.addRoute('procedures/{name}', function() { 
      api.endpoints.procedure(cache.justClicked); // constructed elsewhere 
     }); 
    }; 

    this.initialize(); 
}; 

내가 이것을 언급 hasherJS와 crossroadsJS 문서를 여러 번 반복하지만 새로 고침 문제를 해결하기 위해 어떤 것도 생각할 수 없습니다. 모든 도움을 미리 감사드립니다.

답변

1

내가 당신에게서 자세한 정보가 필요 것이지만, 기본적으로 기본 경로가 항상있는 이유입니다 홈 경로가 될 것입니다 말하는 당신이

var DEFAULT_HASH = 'home'; 

if (! hasher.getHash()) { 
    hasher.setHash(DEFAULT_HASH); 
} 

을 다하고 있으리라 믿고있어 현재 경로를 새로 고침 할 때이를 봅니다. 다음을 시도해보십시오 : 이것은 당신의 기본 URL이 (먼저 페이지를 방문 할 때 장전 한)이 무엇인지 확인하고 당신이 당신의 현재를 볼 새로 고침 할 수 있도록 기본 URL에 #/home 경로를 추가합니다

var DEFAULT_HASH = 'home', url = hasher.getBaseURL(); 

if (hasher.getURL() === url) { 
    hasher.setHash(DEFAULT_HASH); 
} 

노선.

희망이 도움이됩니다.