Tag组件通常用来显示当前操作的多项内容,在我司系统中,选择多个不同站点下栏目的时候,就需要这种展示效果。但是并没有做到组件化,每次写相同的需求的时候都多了很多冗余的代码。
最终实现的效果
https://jsfiddle.net/huang_ju...
扩展
对组件间的通信的理解
首先,先看一下Vue关于自定义事件的文档说明:自定义事件
这里,我们着重关注下这两句:
为什么说,$on监听事件,但是不能用$on侦听子组件释放的事件呢?
我们看API文档中,对于$on, $emit的说明:
vm.$emit, 以及触发的是当前实例上的事件!!!。
所以,当我们在子组件中调用this.$emit的时候,被触发的事件也只能在子组件的实例中被监听到。如果这时候我们在父组件的实例中去监听this.$on(eventname),这样是肯定监听不到这个事件的。
而对于在模板中直接使用 @on:eventname = 'xxx'
,应该可以理解成是一种语法糖吧。不然要在父组件中去监听这个事件,就需要使用事件总线了吧。
Vue过渡效果中,key属性的应用
可以在示例的代码中,删除模板中的key属性,看下这时删除操作的过渡效果。会发现每次都是把第一个元素给删除了,而不是当前点击的元素。解决办法就是上面这个key属性。
总结
Tag组件实现起来并不难,可以当作熟悉Vue的一个练手demo。
通过Tag组件
- 加深了对$on, $emit使用的理解
- 发现了过渡效果中,对于多个元素过渡的应用场景
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。