2016-08-24 2 views
6

중간에 문장을 포함하는 동적으로 생성 된 HTML이있는 Shiny 앱을 만들고 있습니다. 불행히도이 작업을 수행하기 위해 tags 함수를 사용하면, 모든 요소는 내가 원하든 원치 않든 주위에 공백이 있습니다. 내가 쓰고 싶다 예를 들어단락 내의 링크가 반짝이는 불필요한 공백이 있습니다.

이 내 favorite link ever입니다!

하나는이

p('This is my ', a(href = 'https://stackoverflow.com/', 'favorite link ever'), '!') 

을 할 수있는 생각하지만이 HTML 규격에 의해 각각의 사이에 렌더링 공간이 의미 별도의 행에있는 각 요소에서 발생합니다. (느낌표 전에 공간을주의)

이 내 favorite link ever입니다 다음과 같습니다

<p> 
    This is my 
    <a href="https://stackoverflow.com/">favorite link ever</a> 
    ! 
</p> 

!

내가 내 HTML을 구성 HTML(paste0(...))를 사용에 의존해야합니까, 아니면 누락있어 tags 기능을 사용하는 몇 가지 방법이있다?

감사합니다.

답변

0

붙여 넣기를 사용해야합니다. 그렇지 않으면 중첩이 예상대로 작동하지 않습니다.

div(p('hi'),p('what up'),p(HTML(paste0('This is my ',a(href = 'https://stackoverflow.com/', 'favorite link ever'),'!')))) 

결과 :

<div> 
    <p>hi</p> 
    <p>what up</p> 
    <p>This is my <a href="https://stackoverflow.com/">favorite link ever</a>!</p> 
</div> 

당신은 같은 라인에있는 모든 사람들을 싶지 않을 것이다.

도움말에서 : 명명 된 인수는 특성이되고 위치 인수는 자식이됩니다.

때로는 하위가 아닌 위치 지정 인수가있는 것이 더 복잡합니다. 아마 당신 스스로를 구성하는 것만 큼 간단하고 유연하며 강력하지는 않을 것입니다.

+0

1. HTML 빌더 기능을 사용하는 Shiny 개발자가 결과 HTML이 모두 한 줄에 표시되면 왜 신경을 썼겠습니까? 우리가 신경 쓰는 모든 부분에 대해 전체 산출물을 축소 할 수 있습니다. 2. 줄 바꿈을 유지하면서도 일부 기능을 어린이가 별도의 줄에 배치 할 수는 없지만 일부는 그렇지 않을 것이라고 생각하지 않는다. 예를 들어 'div'는 그렇지 않을 것이다. 나는 이것이 특히 복잡하거나 놀라운 것이라고 생각하지 않는다. 3. 동적으로 생성 된 컨텐트를 사용할 때, 도우미 함수는 명시 적 HTML을 붙여 넣는 것보다 훨씬 깨끗하게 보이는 코드를 실제로 생성합니다. 이러한 기능은 이유가 존재합니다. –

+0

BTW, 현재 실제 답변이 없기 때문에이 기능 요청을해야합니다. 이 문제의 근원은'htmltools' 패키지의 업스트림입니다. https://github.com/rstudio/htmltools/blob/02678ee19192f406d1aa5c360916f54df09802a1/R/tags.R#L429 –

+0

나는이 문제를 다음과 같이 썼습니다 : https://github.com/rstudio/htmltools/issues/92 –

관련 문제