2016-08-24 2 views
6

Я создаю блестящее приложение с некоторым динамически сгенерированным HTML, который включает ссылку в середине предложения. К сожалению, если я использую функции tags для этого, каждый элемент имеет пространство вокруг него, хочу ли я этого или нет.Блестящая вставка ссылки в абзаце имеет нежелательные пробелы

Например, если бы я хотел написать

Это мой favorite link ever!

Можно подумать, что вы могли бы сделать это

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

Но это приводит к каждому элементу, на отдельной строке, которая в HTML спецификации означает, что будет пространство оказывается между собой.

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

который выглядит следующим образом (обратите внимание на пробел перед восклицательным знаком)

Это мой favorite link ever!

ли я прибегнуть к помощи HTML(paste0(...)), чтобы построить свой HTML, или есть какой-то метод, чтобы с помощью 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-builder, заботится о том, что итоговый HTML-код находится на одной строке? Для всех, кого мы заботим, вся продукция может быть уменьшена. 2. Даже при сохранении разрывов строк я не вижу причин, по которым у нас не могло быть функций, которые помещают детей на отдельные строки, а некоторые не будут - 'div', например,' p'. Я не думаю, что это особенно сложно или удивительно. 3. При использовании динамически созданного контента вспомогательные функции на самом деле производят гораздо более чистый код, чем вставка явного HTML. Эти функции существуют по определенной причине. –

+0

Кстати, я действительно должен сделать это запрос функции, потому что в настоящее время нет реального ответа. Источник этой проблемы, я считаю, находится вверху в пакете 'htmltools', здесь: https://github.com/rstudio/htmltools/blob/02678ee19192f406d1aa5c360916f54df09802a1/R/tags.R#L429 –

+0

Я написал это как проблему: https://github.com/rstudio/htmltools/issues/92 –

 Смежные вопросы

  • Нет связанных вопросов^_^