已更新至具名插槽
This commit is contained in:
parent
1ee269ce31
commit
85c82fe0e6
|
@ -0,0 +1,51 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<!--
|
||||
slot插槽使用必须在模板内部有定义slot标签,通过使用组件模板传递插槽内容传递过去
|
||||
-->
|
||||
<div id="app">
|
||||
<apps>
|
||||
<div>这是一个span标签</div>
|
||||
<span>哈哈哈</span>
|
||||
</apps>
|
||||
<apps>
|
||||
<div>这是一个span标签</div>
|
||||
<span>呵呵呵</span>
|
||||
</apps>
|
||||
<apps></apps>
|
||||
<apps>
|
||||
<div>这是一个单选框</div>
|
||||
<input type="radio" name="" id="">
|
||||
</apps>
|
||||
</div>
|
||||
<template id="tpl">
|
||||
<div>
|
||||
<div>
|
||||
<slot>
|
||||
<div>这是一个按钮</div>
|
||||
<button>按钮</button>
|
||||
</slot>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</body>
|
||||
<script src="../../../JavaScript/vue.js"></script>
|
||||
<script>
|
||||
new Vue({
|
||||
el:"#app",
|
||||
components:{
|
||||
'apps':{
|
||||
template:"#tpl",
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</html>
|
|
@ -0,0 +1,44 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
<apps slot="item">
|
||||
<input type="text" name="" id="">
|
||||
<button>提交</button>
|
||||
</apps>
|
||||
<apps></apps>
|
||||
</div>
|
||||
<template id="tpl">
|
||||
<div>
|
||||
<div>
|
||||
<slot name="item"></slot>
|
||||
</div>
|
||||
<div>
|
||||
<slot>
|
||||
<div>
|
||||
<input type="text" name="" id="">
|
||||
<input type="button" value="上传" >
|
||||
</div>
|
||||
</slot>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</body>
|
||||
<script src="../../../JavaScript/vue.js"></script>
|
||||
<script>
|
||||
new Vue({
|
||||
el:"#app",
|
||||
components:{
|
||||
'apps':{
|
||||
template:"#tpl"
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</html>
|
|
@ -0,0 +1,53 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
<apps @num="show"></apps>
|
||||
<div v-for="li in list">{{li}}</div>
|
||||
</div>
|
||||
<template id="tpl">
|
||||
<div>
|
||||
<h1>这是子组件内的列表</h1>
|
||||
<ul v-for="list in item">
|
||||
<li>{{list}}</li>
|
||||
</ul>
|
||||
<button @click="linkNumber()">点击我传值</button>
|
||||
</div>
|
||||
</template>
|
||||
</body>
|
||||
<script src="../../../JavaScript/vue.js"></script>
|
||||
<script>
|
||||
new Vue({
|
||||
el:"#app",
|
||||
data:{
|
||||
list:[]
|
||||
},
|
||||
methods: {
|
||||
show(val){
|
||||
this.list.push(val)
|
||||
}
|
||||
},
|
||||
components:{
|
||||
'apps':{
|
||||
template:"#tpl",
|
||||
data(){
|
||||
return {
|
||||
item:['这是内容1', '这是内容2', '这是内容3','这是内容4']
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
linkNumber(){
|
||||
this.$emit('num',this.item)
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</html>
|
|
@ -0,0 +1,52 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
<h1>这是父组件</h1>
|
||||
<div v-for="item in list">
|
||||
<div>{{item}}</div>
|
||||
</div>
|
||||
<h1>这是子组件</h1>
|
||||
<apps></apps>
|
||||
</div>
|
||||
<template id="tpl">
|
||||
<div>
|
||||
<div>
|
||||
<div>{{lists}}</div>
|
||||
</div>
|
||||
<button @click="clickMe()">访问</button>
|
||||
</div>
|
||||
</template>
|
||||
</body>
|
||||
|
||||
<script src="../../../JavaScript/vue.js"></script>
|
||||
<script>
|
||||
new Vue({
|
||||
el:"#app",
|
||||
data:{
|
||||
list:['这是父组件1', '这是父组件2', '这是父组件3', '这是父组件4']
|
||||
},
|
||||
components:{
|
||||
'apps':{
|
||||
template:"#tpl",
|
||||
data(){
|
||||
return {
|
||||
lists:[]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
clickMe() {
|
||||
this.lists = this.$root.list
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</html>
|
|
@ -0,0 +1,51 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
<div>
|
||||
<h1>这是父组件</h1>
|
||||
<h2 v-for="li in list">
|
||||
<div>{{li}}</div>
|
||||
</h2>
|
||||
</div>
|
||||
<apps :new_list="list"></apps>
|
||||
</div>
|
||||
<template id="tpl">
|
||||
<div>
|
||||
<h1>这是子组件</h1>
|
||||
<div v-for="lists in new_list">
|
||||
<div>{{lists}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</body>
|
||||
<script src="../../../JavaScript/vue.js"></script>
|
||||
<script>
|
||||
new Vue({
|
||||
el:"#app",
|
||||
data:{
|
||||
list:['这是第一个内容','这是第二个内容','这是第三个内容','这是第四个内容']
|
||||
},
|
||||
components:{
|
||||
'apps':{
|
||||
template:"#tpl",
|
||||
props:{
|
||||
'new_list':{
|
||||
type:Array,
|
||||
default(){
|
||||
return []
|
||||
},
|
||||
require:true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</html>
|
|
@ -0,0 +1,57 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
<!--
|
||||
$this.refs代表父组件访问子组件
|
||||
ref代表子组件的识别
|
||||
-->
|
||||
</head>
|
||||
<body>
|
||||
<div id="app">
|
||||
<apps ref="list"></apps>
|
||||
<div>
|
||||
<h1>这是父组件</h1>
|
||||
<div v-for="items in list">
|
||||
<div>{{items}}</div>
|
||||
</div>
|
||||
</div>
|
||||
<button @click="thereClick()">访问</button>
|
||||
</div>
|
||||
<template id="tpl">
|
||||
<div>
|
||||
<h1>这是子组件内的列表</h1>
|
||||
<div v-for="item in lists">
|
||||
<div>{{item}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</body>
|
||||
<script src="../../../JavaScript/vue.js"></script>
|
||||
<script>
|
||||
new Vue({
|
||||
el:"#app",
|
||||
data:{
|
||||
list:[]
|
||||
},
|
||||
methods: {
|
||||
thereClick(){
|
||||
this.list=this.$refs.list.lists;
|
||||
}
|
||||
},
|
||||
components:{
|
||||
'apps':{
|
||||
template:"#tpl",
|
||||
data(){
|
||||
return {
|
||||
lists:['列表项1','列表项2',"列表项3"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</html>
|
Loading…
Reference in New Issue