一个很简单的封装组件。

weixin_38048553 2019-01-31 06:04:35
一个很简单的封装组件,如果有属性label则在input前面输出标题,但加了前面span元素之后,后面的文本框就没有了。 //对input 文本框进行封装 Vue.component("tc-input", { props: ['value', 'label'], methods: { updateVal: function (val) { console.log("子控件组件:" + val); this.$emit("input", val); }, }, template: '<span v-if="label">{{label}}</span><input v-model="value" v-on:input="updateVal($event.target.value)" />' });
...全文
87 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38057949 2019-01-31
  • 打赏
  • 举报
回复
我知道這個答案,謝謝你
weixin_38069520 2019-01-31
  • 打赏
  • 举报
回复
需要用一个元素把这些包起来,只允许有一个根元素 例如: <div> <span v-if="label">{{label}}</span> <input v-model="value" v-on:input="updateVal($event.target.value)" /> </div> 或者 你只显示一个元素的话 <span v-if="label">{{label}}</span> <input v-else v-model="value" v-on:input="updateVal($event.target.value)" />
Iceblood_kaka 2019-01-31
  • 打赏
  • 举报
回复
没看到这个错误,应当就是这个问题,最外面包含一个div就可以了。谢谢了。
weixin_38104149 2019-01-31
  • 打赏
  • 举报
回复
請問你有這個錯誤嗎? <span v-if="label">{{label}}</span><input v-model="value" v-on:input="updateVal($event.target.value)" /> - Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧