由于没有css样式,所以组件很丑,将就着看截图。/(ㄒoㄒ)/~~
1.html结构
<body>
<div id="app">
<custom-select btn="Go" :list="list1"></custom-select>
<custom-select btn="搜索" :list="list2"></custom-select>
</div>
<script src="./js/select.js"></script>
</body>
2.js代码
Vue.component('custom-select', {
template: `<div class="searchIpt clearFix">
<div class="clearFix">
<input type="text" class="keyWord"
@click="selectShow=!selectShow"
v-model="val">
<input type="button" :value="btn">
<span></span>
</div>
<custom-list
@receive="changeValueHandle"
v-show="selectShow"
:list="list"
></custom-list>
</div>`,
props: ['btn', 'list'],
data: function() {
return {
selectShow: false,
val: ''
};
},
methods: {
changeValueHandle: function(val) {
this.val = val;
}
}
});
Vue.component('custom-list', {
template: `<ul class="list">
<li v-for="item in list" @click="selectValueHandle(item)">{{item}}</li>
</ul>`,
props: ['list'],
methods: {
selectValueHandle: function(val) {
this.$emit('receive', val);
}
}
});
var vm = new Vue({
el: '#app',
data: {
list1: ['北京', '上海', '杭州'],
list2: ['2017-4-21 10:11:31', '2017-4-22 10:11:31', '2017-4-23 10:11:31']
}
});
1.组件嵌套很深的时候,数据传递很麻烦。
2.兄弟组件间的通讯也比较麻烦的问题。