Vue中自定义组件标签:先定义组件内容,然后注册,这里com-a就是自定义组件名
var component_a = {
template: `<p>{{ title }}</p>
<p>{{ value1 }}</p>`
}
components: {
'com-a': component_a
}
页面中就可以直接使用了
<div id="app">
<com-a :title="name1" :value1="q"></com-a>
</div>
同时可以结合父元素属性传递,实现数据互通
<div id="app">
<com-a :title="name1" :value1="q"></com-a>
</div>
var component_a = {
props: ['title','value1'], //传入父元素属性
template: `<p>{{ title }}</p>
<p>{{ value1 }}</p>`
}
props: ['title','value1']传入父元素com-a中的title和value1属性值 ,title和value1通过v-bind绑定data中的变量,因为自定义的组件内容中,是无法直接引用data中的变量的,所以通过这种方式可以间接使用。
完整使用
<!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">
<script src="https://cdn.staticfile.org/vue/3.2.36/vue.global.min.js"></script>
<title>Document</title>
</head>
<body>
<div id="app">
<input type="text" v-model="name1">
<!-- 父元素 -->
<com-a :title="name1" :value1="q"></com-a>
</div>
</body>
<script>
var component_a = {
props: ['title','value1'], //传入父元素属性
template: `<p>{{ title }}</p>
<p>{{ value1 }}</p>`
}
const app = Vue.createApp({
data() {
return {
name1: 'Hello',
q:1+1
}
},
components: {
'com-a': component_a
},
watch: {//监听数据变化
name1:function(newValue,oldValue){
alert('新:'+newValue+''+'旧'+oldValue)
}
},
});
app.mount('#app')
</script>
</html>