【发布时间】:2020-11-04 02:36:06
【问题描述】:
我正在尝试将vue-tags-input 与 Laravel 7 一起使用。我可以让它以表单的形式出现在页面上,并且我可以填写值,但我看不到如何预先填充标签加载也不如何获取表单中提交的值。最终我想在一个表单中有多个实例(有多个标签字段),因此需要将它包装为一个可重用的组件。
这是我包装原件的组件(resources/js/components/TagsInput.vue):
<template>
<div>
<vue-tags-input v-model="tag" :tags="tags" @tags-changed="newTags => tags = newTags"/>
</div>
</template>
<script>
import VueTagsInput from '@johmun/vue-tags-input';
export default {
name: "TagsInput",
components: {
VueTagsInput,
},
data() {
return {
tag: '',
tags: []
};
},
};
</script>
组件从resources/js/app.js添加到Vue实例(它是唯一的组件):
const app = new Vue({
el: '#app',
components: {
"tagsinput": require('./components/TagsInput.vue').default
}
});
这是我想从刀片模板中使用它的方式:
<tagsinput id="tags" name="tags" :tags="{{ $tags }}"></tagsinput>
有几个问题:
- 通过
{{ $tags }}传递的数据在tags属性(例如[{"key":"my tag","value":"My Tag"}])中正确呈现(?),但标签不会出现在结果输出中。我从文档中收集到我应该不将tags声明为prop,因为它会与data中的内容冲突。 -
id和name属性应用于生成标记的最外层元素,而不是底层输入标签,因此这些值不是由包含表单提交的,因此它们目前很漂亮,但没用.
还有一些我不明白的其他元素——我不知道data 中的tag 属性是做什么用的,也不知道为什么我可能想要@tags-changed 部分。
我找到了this similar question,但这似乎没有任何方法可以从 Laravel 传递数据。总的来说,我发现 Vue 非常复杂——可能是它不适合这项工作。
【问题讨论】:
-
我放弃了,vue 确实是这个工作的错误工具。
标签: php laravel vue.js vue-component