Vue, говорящий "свойство или метод {метод}, не определенный, но на который ссылаются при рендеринге", хотя свойства и методы определены - PullRequest
0 голосов
/ 30 марта 2019

РЕДАКТИРОВАТЬ: Я обнаружил проблему, и это из-за обновления я не вижу от Babel. Как описано в этой проблеме в репозитории Vue git, мне просто нужно было добавить .default к моим require вызовам.


Я пытаюсь повторить шаги из серии Laracasts «Давайте создадим форум», и в уроке 32, где часть «Ответить», станет компонентом Vue. Для этого конкретного урока я попытался использовать тот же код, что и в github repo , но он также не работает. Vue продолжает говорить, что свойство или метод не были определены до вызова.

Ошибка (нажмите, чтобы открыть imgur): wtf vue

Я пытался отправить данные в виде строки 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...