2017-03-21 3 views
3

vue-router와 함께 Vue를 사용하고 있습니다. 목록보기의 제품 항목의 경우 url 속성을 제품 세부 사항보기의 경로로 설정하여 JSON-LN 주석을 생성하고 싶습니다.vue-router의 이름과 매개 변수로 경로를 얻으십시오.

은 내가 this.$route.path을 사용하여 현재 경로의 경로를 얻을 수 있지만 다른 곳에서 경로의 경로를 주입하는

<router-link :to={name: 'ProductDetail', params: {id: some_id, slug: some_slug}}></router-link>

로 렌더링 할 것 같은 별개의 경로 경로를 얻을 수있는 방법이 있나요 알아?

+0

안녕하세요. Ti 어쨌든 제품 URL을 얻기 위해 Vuejs를 구조화하는 방법에 대해 자세히 설명해 줄 수 있습니까? –

+0

@Mdunbavan 직면 한 문제를 구체적으로 설명해 주시겠습니까? 라우터 별 답변은 아래에 게시됩니다. 하지만 또 다른 문제는 JSON-LD의 경우 경로의 일부가 아닌 전체 URL을 지정해야한다는 것입니다. 이를 위해 저는이 솔루션을 사용했습니다 : http://developmentnow.com/2016/07/13/webpack-injecting-server-urls/ –

답변

6

당신은 Router instance's resolve method를 찾고 있습니다 :

<router-link/>에서 사용, 반환 다음 해결 속성 객체를 동일한 형태로

주어진 위치 :

{ 
    location: Location; 
    route: Route; 
    href: string; 
} 

귀하의 경우에는 당신이 할 수있는 URL을 얻으려면 다음과 같이하십시오.

let props = this.$router.resolve({ 
    name: 'ProductDetail', 
    params: { id: some_id, slug: some_slug }, 
}); 

return props.href; 
+0

안녕하세요, 유망스럽게 보입니다. 위의 소품을 사용하면 경로를 클릭 할 때 제품 세부 정보를 구성 요소에 어떻게 삽입 할 수 있습니까? 구성 요소 자체 내부로 들어가겠습니까? –

+0

@Mdunbavan 왜 주사해야합니까? 'this. $ route.name'과'this. $ route.params'를 통해 현재 경로의 이름과 매개 변수에 접근 할 수 있습니다. – thanksd

+1

@thanksd 왜냐하면 실제로이 경로의 정보를 반환 할 것이지만 OP (및 나 자신)이 원하는 다른 경로의 정보는 반환하지 않기 때문입니다. 당신의 대답은 그것이 효과가있을 것처럼 보입니다. 이름을 기반으로 다른 경로에서 메타 데이터를 얻으려고하고 있는데 이것이 효과가 있다고 생각합니다. 'this. $ router.ProductDetail ... '과 같은 것을 할 수 있다면 멋질 것입니다.하지만 그것이 효과가없는 이유는 분명합니다. – Chase