<template> <div class="tag-wrap"> <span>标签:</span> <input type="text" id="tag" name="tag" v-model="val" /> <button id="apply" v-on:click="add" >添加</button> <ul class="tag-cont clear" v-bind:style="{width: width}"><li v-for="item in cont">{{item}}</li> </ul> </div></template>1.1 template只是模板语言的标记,解析后不会生成到页面,所以内容需要用一个div包裹住;
<script> export default{ name: "tag", data () { return { cont: [], val: "" } }, methods: { add: function () { let _val = this.val if (_val.length === 0 || this.cont.indexOf(_val) > -1) {return } this.cont.push(this.val) } }, props: { width: { type: String, default: "auto" } } }</script>2.1 使用v-model="val"实现输入自动更新val这个属性;
<style lang="scss" scoped > @keyframes item-show{ from{ opacity: 0; } } .clear{zoom: 1; } .clear:after{ content: ""; display: block; width: 0px; height: 0px; overflow: hidden; clear: both; } $back-color:#fed;span{ background: $back-color; } .tag-cont{ list-style: none; margin: 10px auto; padding: 5px; border: 1px solid lightblue; } .tag-cont > li{ float: left; padding: 5px; border:1px solid gray; border-radius: 10px; animation: item-show 1s; margin: 10px; } </style>3.1 用lang来标记style标签内的Css实现
<template> <div id="app"><tag width="300px"></tag> </div></template><script>import Tag from "./components/Tag"export default { name: "app", components: { Tag }}</script>5. 效果图
学习总结
Tag组件其实是一个很小的组件,业务价值很低,主要用于Vue新手入门。主要实现Vue常用的父组件改变子组件的值,view改变model,model的变化反应到view上,事件的绑定等功能。
还需要继承深入了解,以及vuex管理vue组件的应用,还有组件之间的通信。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!