Vue: Пустое значение свойства приводит к сбою компиляции шаблона

Созданный на 18 окт. 2016  ·  3Комментарии  ·  Источник: vuejs/vue

Версия Vue.js

2.0.3

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

https://jsfiddle.net/jt3hjuwg/

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

Свяжите опору, имеющую в качестве значения пустую строку. Если бы вы предоставили объект JSON или строку null это сработало бы, но если вы используете пустую строку, шаблон не скомпилируется.

Я не уверен, ожидается ли такое поведение в Vue 2 (раньше оно работало в Vue 1). Однако это кажется немного нелогичным. Например, если я предоставляю контент в качестве опоры на стороне сервера, мне нужно проверить, существует ли он, и в противном случае вернуть буквальную строку null .

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

Приложение по-прежнему обрабатывается, но свойство становится пустой строкой или нулевым значением.

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

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

[Vue warn]: failed to compile template:

<review :review=""></review>

(found in root instance)

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

@fnlctrl
Как бы вы сделали это с реквизитом Number?

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

Привет, спасибо, что заполнили этот вопрос.

если вы используете пустую строку, шаблон не скомпилируется.

Вы не устанавливаете пустую строку с помощью <review :review=""></review> .
Правильный способ: <review :review="''"></review> . Напомним, что v-bind ожидает выражений javascript. https://jsfiddle.net/fnlCtrl/jt3hjuwg/1/

Например, если я предоставляю контент в качестве опоры на стороне сервера, мне нужно проверить, существует ли он, и в противном случае вернуть буквальную строку null.

Вам нужно только дать ему пустую строку '' , вот и все.

Разве для Vue нет лучшего способа справиться с этим? Или возможно обеспечить лучшую обработку ошибок вместо того, чтобы выгружать половину DOM внутри консоли, когда это происходит?

@fnlctrl
Как бы вы сделали это с реквизитом Number?

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