forked from ygs-code/vue
-
Notifications
You must be signed in to change notification settings - Fork 0
/
is.html
88 lines (78 loc) · 3.26 KB
/
is.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vue.js"></script>
</head>
<div id="app">
<!--
1.在这里调用组件。
2.vue初始化实例配置项,挂载到#app,并调用了子组件(自定义组件first_component),通过在子组件内
提前定义props:['pass_c']接收它的父组件传下来的值,a是初始化vue实例配置项的变量, 这种方式就是组件解耦使用。
-->
<first_component :pass_c="a">
</first_component>
<div style="border:1px solid greenyellow;padding:20px">
<h2>is 与 :is 的用法 ,区别如下:</h2>
<div is="e"></div>
<div :is="f"></div>
</div>
</div>
<script>
var four_component = { // 自定义组件4
template:`<h2>:is -- 要在new Vue定义一个变量才能用 :is='f' 在#app 模板调用,否则报错 'undefined'</h2>`
}
var third_component = { // 自定义组件3
template:`<h2>is -- 要在components注册这个组件,才能用 is 引用second_component组件</h2>`
}
var second_component = { // 自定义组件2
template: `<div>
<div>
<del>{{ c }} </del> <br>
<del>{{ pass_d }} </del>
</div>
</div>`,
data(){
return {
c: 'c_value come form second'
}
},
props:['pass_d']
}
var first_component = { // 自定义组件1
//注意这里template 最外层只能有一个div,不能出现并列两个div
template: `<div>
<div style="border:1px solid red;padding:20px;">
<h2 style="color:red;">first_component: </h2><b>{{ b }}</b><br><b>{{ pass_c }}</b>
</div>
<div style="border:1px solid green;padding:20px;">
<h2 style="color:red;">second_component: </h2>
<second_component :pass_d="d"></second_component>
</div>
</div>`, // 定义组件的模板
data(){ // 官方规定组件里的data必须是函数,才不会在同组件中相互干扰
return { // 返回的变量可以直接在该组件的template上使用
b:'b_value come from first',
d: 'd_value come from first'
}
},
props: ['pass_c'], // 用于接收其父组件的传值
components: { // 还可以调用子组件
second_component : second_component
}
}
new Vue({ // 实例化Vue
el:"#app", // 挂载到#app
components:{ //局部注册组件
first_component : first_component, // 一定要在实例上注册了才能在html文件中使用
e : third_component ,// 要在components注册这个组件,才能用is 引用 third_component 组件
},
data:{
a : 'a_value come from new Vue',
f : four_component // 用:is 引用four_component组件,要预先定义f变量
}
})
</script>
</body>
</html>