使用vue做一个select组件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" type="text/css" href="style.css">
<script src="vue.js"></script>
</head>
<body>
<!-- <table> 处理不符合w3c规则的 is="custom-select"
<tr is="custom-select"><custom-select btn-value="搜索"></custom-select></tr>
</table> -->
<div id="app">
<h2>自定义的下拉框1</h2>
<custom-select btn-value="搜索" v-bind:list="list1"></custom-select>
<h2>自定义的下拉框2</h2>
<custom-select btn-value="呵呵" v-bind:list="list2"></custom-select>
</div>
<div id="app1"></div>
<script type="text/javascript">
/*var obj = {
selectShow:false
}*/
//注册组件 全局
Vue.component("custom-select", {
data: function() {
return {
selectShow: false,
val: ""
};
},
props: ["btn-value", "list"],
template: `
<section class="warp">
<div class="searchIpt clearFix">
<div class="clraeFix">
<input type="text" class="keyWord" :value="val" @click="selectShow = !selectShow" >
<input type="button" :value="btnValue">
<span></span>
</div>
<custom-list
v-show="selectShow"
:list="list"
v-on:receive="changeValueHandle"
>
</custom-list>
</div>
</section>
`,
methods: {
changeValueHandle: function(value) {
//alert("wobeihcufa"+ value)
this.val = value;
}
}
});
Vue.component("custom-list", {
props: ["list"],
template: `
<ul class="list">
<li v-for= "item in list" @click="selectValueHandle(item)">{{item}}</li>
</ul>`,
methods: {
selectValueHandle: function(item) {
//在子组件交互父组件 需要出发一个自定义事件
//console.log(item);
this.$emit("receive", item);
}
}
})
var data = {
list1: ["北京", "上海", "杭州"],
list2: ["17-02-16", "17-03-16", "17-03-19"]
}
new Vue({
el: "#app",
//局部注册 只能在本对象#app下使用
components: {
/*"custom-select":`
<section class="warp">
<div class="searchIpt clearFix">
<div class="clraeFix">
<input type="text" class="keyWord" value="">
<input type="button" value="GO">
<span></span>
</div>
</div>
<ul class="list">
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
<li>1111</li>
</ul>
</section>
`*/
},
data: data
});
</script>
</body>
</html>