代码拉取完成,页面将自动刷新
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="./css/reset.css">
<link rel="stylesheet" href="./css/myselect.css">
<script src="./js/vue.js"></script>
</head>
<body>
<div id="app">
<my-select></my-select>
<table border="" cellpadding="" cellspacing="">
<tr>
<td>123</td>
<td>456</td>
<td>
<my-select></my-select>
</td>
</tr>
<tr>
<my-select></my-select>
</tr>
<!-- 动态绑定组件, 利用is属性 -->
<tr is="my-select"></tr>
</table>
</div>
</body>
<script>
Vue.component("my-select", {
template: `<div class="select">
<div class="result">
<span class="option">{{option}}</span>
<span class="trig" v-bind:class="{'active':state}" v-on:click="changeState"><</span>
</div>
<ul v-bind:class="state?'active':''">
<li v-for="(ele,i) in arr" v-on:click="choose(ele)">{{ele}}</li>
</ul>
</div>`,
data() { //组件中的data是一个函数,并且返回一个对象。
//(思考:为什么?函数有独立作用域,可以保证每一次调用组件,组件data都是独立的,互相不干扰)
return {
state: false, //记录列表展开的状态 false---隐藏
arr: ['html', 'css', 'js'],
option: "html"
}
},
methods: {
changeState() { //切换展开的状态
this.state = !this.state
},
choose(str) {
this.option = str
this.state = false
}
},
created() {
console.log("created")
},
mounted() {
console.log("mounted")
},
updated() {
console.log("updated")
},
})
new Vue({
el: "#app",
data: {
},
})
</script>
</html>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。