<!DOCTYPE html>
<html>
<head>
<title>組件</title>
<script type="text/javascript" src="./vue-dev.js"></script>
</head>
<body>
<div id="app">
<child-item :content="message"></child-item>
</div>
<script type="text/javascript">
Vue.component('child-item', {
props: ["content"],
template: '<div>{{content}}</div>',
})
var vm = new Vue({
el: '#app',
data() {
return {
message: '顯示時間' + new Date().toLocaleString()
}
},
methods: {
}
})
</script>
</body>
</html>
複製代碼
props的講解:javascript
1. 能夠接收一個數組 ,多個屬性 ['屬性1','屬性2']
2. 能夠是對象,指定傳遞進來的屬性類型
Vue.component('childItem',{
props:{
//props能夠是對象,實現組件參數的校驗
content:String , //指定父組件傳遞過來的參數的類型
summary:[String,Number] ,//能夠接收兩種類型,
ext:{
type:String,
required:true,
default:'設置默認值',
validator:function (value) { //校驗器,校驗文本長度必須大於5
return(value.length > 5);
}
}
},
template:'<div>{{content}}</div>'
});
複製代碼
單向數據流:父組件能夠向子組件經過屬性形式傳遞參數,傳遞的參數也能夠隨時隨意修改;但子組件不能修改父組件傳遞過來的參數,只能使用父組件傳遞的數據html
如:vue
Vue.component('child-item', {
props: ["content"],
template: '<div @click="addContent">{{content}}</div>',
methods:{
addContent:function(){
this.content += '我不能直接被修改'
}
}
})
複製代碼
出錯:java
正確寫法: 將接收到的數據複製一份放在子組件定義的data裏summary數組
Vue.component('child-item', {
props: ["content"],
template: '<div @click="addContent">{{summary}}</div>',
data(){
return{
summary:this.content
}
},
methods:{
addContent:function(){
this.summary += '我能夠直接被修改'
}
}
})
複製代碼
<!DOCTYPE html>
<html>
<head>
<title>組件</title>
<script type="text/javascript" src="./vue-dev.js"></script>
</head>
<body>
<div id="app">
<child-item :content="message" @change="handleChangeEvent"></child-item>
</div>
<script type="text/javascript">
Vue.component('child-item', {
props: ["content"],
template: '<div @click="addContent">{{content}}</div>',
data(){
return{
summary:this.content
}
},
methods:{
addContent:function(){ //對外傳遞事件
this.$emit('change','後綴ext')
}
}
})
var vm = new Vue({
el: '#app',
data() {
return {
message: '顯示時間' + new Date().toLocaleString()
}
},
methods: {
//監聽事件,接收數據
handleChangeEvent:function(step){
this.message +=step;
}
}
})
</script>
</body>
</html>
複製代碼