编辑:我已经找到了问题,这是由于我没有从Babel看到的更新。如Vue git存储库中this issue所述,我只需要向我的.default
调用中添加require
。
我正在尝试复制Laracasts系列“让我们建立一个论坛”中的步骤,在第32课中,Response部分成为Vue组件。在该特定课程中,我尝试使用github repo中提供的相同代码,但是它也不起作用。 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
的定义。