2013-10-24 4 views
1

백본에서 수행 할 작업을 찾고 있습니다. 여기에 설명이 있습니다.Backbone.js에서 기본 경로에 슬래시를 사용하지 마십시오.

내 루트 URL 가정

{ 
    '': 'defaultRoute', 
    'test': 'test', 
    'testing': 'testing' 
} 

같은 백본 노선이는 '/경로'지금은 'router.navigate ('테스트 '말할 때

, {: 사실 트리거}이다); '의 URL이 /routes/test으로 변경됩니다.

비슷한 방법으로 ''이라고 부릅니다. router.navigate ('testing', {trigger : true}); '의 URL이 /routes/testing으로 변경됩니다.

하지만 'router.navigate (' ', {trigger : true})를 호출하면됩니다. '의 URL이 /routes/으로 변경됩니다.

당신은 그/마지막에 기대하지 않았다는 것을 알고 있습니다. 나는 그것을 결코 통과하지 못했습니다. 루트 URL 인 '/routes'으로 되돌아갔습니다.

끝에 /를 추가하면/차이가 많습니다. Checkout 'http://googlewebmastercentral.blogspot.in/2010/04/to-slash-or-not-to-slash.html'

그 어떤 문제 (즉, 기본 경로가 없거나 끝나지 않았 음)?

+0

백본 힘 루트 행은 항상 후행 슬래시 선도해야합니다 :'this.root = ('/'+ this.root + '/').replace(rootStripper를,'/ '); '백본 V1.0의 라인 # 1379 –

답변

0

업데이트 : -

이것은 Backbone의 최신 버전에서 이미 수정되었습니다. 나는 포럼에 관한 질문을하고 대답을 찾았다. 같은 것을 찾는 사람에게 도움이된다면 대답으로 추가 할 것입니다.

https://github.com/jashkenas/backbone/issues/2871

0

Backbone.History.prototype.navigate을 무시하십시오.

var url = this.root + fragment; 

에 :

if(this.root !== '/' && fragment === ''){ 
    var url = this.root.replace(trailingSlash, ''); 
    }else{ 
    var url = this.root + fragment; 
    } 
+0

감사 키트 O. 알았어. 하지만 라이브러리 파일을 업데이트하고 싶지는 않습니다. 물론 라이브러리 버전을 업데이트 할 때 또 다른 문제가 생깁니다. –

0

일단 가장 중요한

복사 기본 기능을이 줄을 변경

응용 프로그램이 루트 URL에서 제공되지 않는 경우/ 도메인의 경우 실제로 루트가있는 기록을 옵션으로 지정해야합니다. Bac kbone.history.start ({pushState : 사실, 루트 : "/ 공공/검색 /"}) 귀하의 경우에는 Backbone#History

, root: "/routes" 같은 될 가능성이 높습니다. 기억해야 할 점은 브라우저에서 웹 사이트가 리소스 또는 원격 폴더로 표시된다는 것입니다. 따라서 후행 슬래시가없는 기본 경로는 대개 ""를 의미하기 때문에 ""로 남겨두면 완전히 작동하지 않을 수 있습니다 현재 폴더". 대신 (이 기본적으로해야하는 것처럼) root: "/"로 루트 URL을 설정하려고하고, 기본 경로로 다음과 같은 뭔가 "루트"리소스를 만들 수 있습니다 내가 뭐하는 거지

{ 
    'test': 'test', 
    'testing': 'testing', 
    'routes': 'defaultRoute', 
    '*':  'catchAll' 
} 

또 다른 추천 (위에서 볼 수 있듯이) 누군가 존재하지 않는 URL을 입력 할 경우를 대비하여 모든 URL을 캐치하도록 설정하고,이 URL을 사용하여 사용자를 기본 경로로 리디렉션 할 수도 있습니다.API가 당신이 단지를 따르는 경우 업데이트하는 것이 더 쉬울 수 있어야 변화하는 미래에 수동으로 백본 URL을 엉망, 당신은 매우 모든 일을 깰 자신을 걸고 어떤 이유로 AND 경우 마지막으로

// your code above ... 
defaultRoute: function() { 
    // your default route code... 
}, 

catchAll: function() { 
    this.navigate('routes', {trigger: true}); 
} 
// your code below ... 

, 사용 목적.

+0

나중에 완전히 동의합니다. 그러나 여기에있는 요점은 여기에있는 모든 URL이 http://xyz.com/lmno 또는 http://xyz.com/lmno/pqr과 비슷하다는 것입니다. 예를 들어 Google에서 크롤링 한 후행을 전혀 사용하지 않습니다. 같은 방식으로. 그것을 추가하는 것은 단지 백본입니다. 많은 사이트에서 후행 슬래시를 사용하지 않을 것이라고 확신합니다. 이 페이지를 참조하십시오. (슬래쉬는 없습니다.) http://stackoverflow.com/questions/19557934/avoid-traliing-slash-for-default-routes-in-backbone-js/19566400. 내가 좋은 해결책으로 끝나기를 바란다. –

+0

분명히 나는 ​​백본 파일을 편집하지 않을 것이다. 나는 그 연습이 싫다. 백본의 기능으로 원했던 것이나 다른 방식으로 작동하게했을 수도 있습니다. 감사 –

관련 문제