prop:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <script src="https://cdn.jsdelivr.net/npm/axios@0.12.0/dist/axios.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/lodash@4.13.1/lodash.min.js"></script> <style> div { font-size: 14px; font-weight: normal; color: grey; } .title { font-size: 22px; font-weight: bolder; color: skyblue; } .common { margin-top: 20px; margin-bottom: 20px; border-top: 2px dashed gainsboro; } .parting-line { background: peachpuff; margin: 20px; } </style> </head> <body> <div id="app1"> <div class="common"> <div class="title">(1) app1-传递静态prop</div> <blog-post post-title="m kkdsd"></blog-post> <div class="title">(2) app1-动态赋予一个变量的值</div> <blog-post v-bind:post-title="post.title"></blog-post> <div class="title">(3) app1-动态赋予一个复杂表达式的值</div> <blog-post v-bind:post-title="post.title + ' by ' + post.author.name"></blog-post> </div> </div> </body> <script> // prop验证 Vue.component('my-component', { props: { // 基础类型检查 propA: Number, // 多个可能的类型 propB: [String, Number], // 必填字符串 propC: { type: String, required: true }, // 带有默认值的数字 propD: { type: Number, default: 100 }, // 带有默认值的对象 propE: { type: Object, default: function(){ return { message: 'hello'} } }, // 自定义验证函数 propF: { validator: function(value){ // 这个值必须匹配下列字符串中的一个 return ['success', 'warning', 'danger'].indexOf(value) !== -1 } } } }) Vue.component('blog-post', { props:['postTitle'], template:`<h3>{{postTitle}}</h3>` }) var app1 = new Vue({ el:'#app1', data:{ post:{ title:'kkk', author:{ name:'888' } } } }) </script> </html>
参考 & 感谢:vue官网 & 各路大神