Vue: Усы Vue.js некорректно отображаются только после отступа корневого элемента

Созданный на 29 апр. 2018  ·  4Комментарии  ·  Источник: vuejs/vue

Версия

2.5.16

Ссылка для воспроизведения

https://codesandbox.io/s/6jnlpno3lw

Действия по воспроизведению

Эта проблема возникает, когда корневой элемент не имеет отступа и усы разделены на несколько строк.

<template>
<div>
    <p>{{
        myVar
    }}</p>
</div>
</template>

Только когда корневой элемент имеет отступ, усы отображаются правильно.

<template>
    <div>
        <p>{{
            myVar
        }}</p>
    </div>
</template>

Что также работает, это когда усы помещаются в одну строку, а корневой элемент не имеет отступа.

<template>
<div>
    <p>{{ myVar }}</p>
</div>
</template>

Что ожидается?

Усы должны связывать данные

Что на самом деле происходит?

Усы отображаются как обычный текст


Я хотел только улучшить свой код, поэтому разделил усы на несколько строк и удалил отступ корневого элемента.

bug has PR

Самый полезный комментарий

Зачем кому-то так писать свой код?

Все 4 Комментарий

работает с одним пробелом между <template> и root element :

<template> <p>{{
  myVar
}}</p></template>

не без пробелов между ними:

<template><p>{{ 
  myVar
}}</p></template>

Зачем кому-то так писать свой код?

@syntacticsolutions Это не имеет значения, на самом деле это ошибка, верно?

Спасибо @DanielSharkov , это должна быть ошибка.

Основная причина различного поведения с отступом ниже: https://github.com/yyx990803/de-indent/blob/master/index.js#L17 -L24

    if (c === ' ' || c === '\t') {
      type = c
      cur = count(line, type)
      if (cur < min) {
        min = cur
      }
    } else {
      return str

Может стоит добавить \ r? шаблон в текстовом регулярном выражении интерполяции:

https://github.com/vuejs/vue/blob/5e3823a5766da1df60481e1e7a20f36d08e716ce/src/compiler/parser/text-parser.js#L6 -L13

Была ли эта страница полезной?
0 / 5 - 0 рейтинги