РЕДАКТИРОВАТЬ: Я обнаружил проблему, и это из-за обновления я не вижу от Babel. Как описано в этой проблеме в репозитории Vue git, мне просто нужно было добавить .default
к моим require
вызовам.
Я пытаюсь повторить шаги из серии Laracasts «Давайте создадим форум», и в уроке 32, где часть «Ответить», станет компонентом Vue. Для этого конкретного урока я попытался использовать тот же код, что и в github repo , но он также не работает. Vue продолжает говорить, что свойство или метод не были определены до вызова.
Ошибка (нажмите, чтобы открыть imgur):
Я пытался отправить данные в виде строки JSON, но Vue Console показала, что это не проблема. Объект JSON получает Vue, но мой встроенный шаблон, похоже, просто не работает, независимо от того, что я делаю или выполняю рефакторинг.
Вот мой reply.blade.php
код:
<reply :attributes="{{ $reply }}" inline-template v-cloak>
<div class="reply d-flex">
{... removed the markup not used by vue nor blade ...}
<div v-if="editing">
<div class="form-group">
<textarea class="form-control" v-model="content"></textarea>
</div>
<button class="btn btn-xs btn-primary" @click="update">{{ __('common.update') }}</button>
<button class="btn btn-xs btn-link" @click="editing = false">{{ __('common.cancel') }}</button>
</div>
<div v-else v-text="content"></div>
</div>
{... note: the code below must stay in a blade file, and it must be inside the Reply.vue component ...}
@include('threads.components.like_button', [
'likeable' => $reply,
'like_url' => route('reply.like', $reply),
'path' => "/replies/{$reply->id}/delete"
])
</div>
</div>
</reply>
сейчас мой Reply.vue
файл
<script>
export default {
props: ['attributes'],
data() {
return {
editing: false,
content: this.attributes.content
};
},
methods: {
update() {
axios.patch('/replies/' + this.attributes.id, {
content: this.content
});
this.editing = false;
flash('Reply updated!');
}
}
}
</script>
Я ожидаю, что мой Reply.vue будет выполнять роль клиентского скрипта, и теперь я на самом деле, когда я покидаю путь из-за определения компонентов Vue, однако я не могу использовать разметку, показанную в Компонент Vue, поскольку он не будет включать мою динамическую кнопку «Мне нравится», которая НЕ является компонентом Vue. Отсюда и определение inline-templete
.