Как динамически добавить новую строку в строку, хранящуюся в состоянии AMP?

Я учусь работать с ускоренными мобильными страницами. Я хочу добавить новую строку и некоторый текстовый контент в строку, хранящуюся в amp-state, когда пользователь нажимает кнопку. Итак, я пробовал это:

<script src="https://cdn.ampproject.org/v0.js"></script>
<script src="https://cdn.ampproject.org/v0/amp-bind-0.1.js"></script>

<amp-state id="formState">
  <script type="application/json">
    {
      "message": "Some text"
    }
  </script>
</amp-state>

<textarea [text]="formState.message"></textarea>

<button type="button"
  on="tap:AMP.setState({formState: {message: formState.message + '\nSome another text'} })">
  Button
</button>

К сожалению, кажется, что он каким-то образом избегает символа \. Так что я буквально получил Some text\nSome another text в textarea.

Пробовал String.fromCharCode и так далее, но в AMP это запрещено... застрял на этом.

Я не могу найти много документации по этому варианту использования, поэтому спрашиваю здесь: есть ли способ динамически добавлять новую строку в строку, хранящуюся в amp-state, при взаимодействии с пользователем?


person Nina Lisitsinskaya    schedule 02.09.2018    source источник
comment
Это похоже на ошибку. Я зарегистрировал проблему здесь: github.com/ampproject/amphtml/issues/17863   -  person Sebastian Benz    schedule 04.09.2018


Ответы (1)


Определите новую строку:

<amp-state id="formState">
  <script type="application/json">
  {
    "message": "Some text",
    "newLine": "\n"
  }
  </script>
</amp-state>

тогда:

 on="tap:AMP.setState({formState: {message: formState.message + formState.newLine + 'asdf'} })">
person Sven Liivak    schedule 02.09.2018