Vue会说“属性或方法{method}未定义,但在渲染中引用”,即使属性和方法已定义

时间:2019-03-30 13:20:25

标签: laravel vue.js laravel-blade

编辑:我已经找到了问题,这是由于我没有从Babel看到的更新。如Vue git存储库中this issue所述,我只需要向我的.default调用中添加require


我正在尝试复制Laracasts系列“让我们建立一个论坛”中的步骤,在第32课中,Response部分成为Vue组件。在该特定课程中,我尝试使用github repo中提供的相同代码,但是它也不起作用。 Vue一直在说,在调用之前尚未定义属性或方法。

错误(单击以打开imgur):wtf vue

我尝试将数据作为JSON字符串发送,但是Vue Console显示这不是问题。 Vue正在接收JSON对象,但是无论我做什么或重构,我的内联模板似乎都无法工作。

这是我的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 Components的定义范围,但是,我不能使用我在Vue组件,因为它不会包含不是Vue组件的动态“赞”按钮。因此,inline-templete的定义。

0 个答案:

没有答案