Vue组件细节1

标签中is属性,可以规避html5规则的一些错误。

 1 <div id="app">
 2     <table>
 3 <!--        表格中如果使用tr或类似这种多层包裹的,使用组件代替里面的内容,有可能出现生成的tr在tbody外-->
 4         <tbody>
 5             <row></row>
 6 <!--            通过is属性将组件指定好,就可以规避这个问题-->
 7             <tr is="row"></tr>
 8         </tbody>
 9     </table>
10 </div>
11 <script src="../js/vue.js"></script>
12  
13 <script>
14     // 定义全局组件
15     Vue.component('row',{
16         template:'<tr>test</tr>'
17     });
18     var vm = new Vue({
19         el:'#app',
20     })
21 </script>

父组件和子组件之间传递参数,子组件对参数进行校验

 1 <div id="app">
 2     <child content="test"></child>
 3 </div>
 4 <script src="../js/vue.js"></script>
 5 <script>
 6     Vue.component('child',{
 7         template:'<div>{{content}}</div>',
 8         // 父组件向子组件传递数据时,可以进行验证校验
 9         props:{
10             content:{
11                 // type 父组件向子组件传递的数据类型 列表可以写入多中类型判断
12                 type: [String,Number],
13                 // required 是否必须传
14                 required: true,
15                 default: '默认参数',
16                 // 自定义校验规则 value参数是父组件传递进来的参数
17                 validator:function (value) {
18                     return (value.length>5)
19                 }
20  
21             }
22         }
23     });
24     var vm = new Vue({
25         el:'#app'
26     })
27 </script>

父组件向子组件传值

 1 <div id="app">
 2     //num2参数使用父组件的data属性
 3     <number :num2="number2" num3="10"></number>
 4     {{number2}}<input type="button" value="test" @click="change">
 5 </div>
 6 
 7 Vue.component('number',{
 8         //父组件向子组件传参,存在单向数据流
 9         props:['num2','num3'],//子组件通过props属性接收父组件的传值
10         template:'<div>子组件---<span>{{count}}--{{number3}}</span></div>',
11         data:function () {
12             return{
13                 //子组件接收父组件的传值,需要在data中重新定义,保证这个传值父子组件不互相影响,起到隔离作用
14                 count:this.num2,
15                 number3:this.num3
16             }
17         }
18     });
19     new Vue({
20         el:'#app',
21         data:{
22             number2:99
23         },
24         methods:{
25             change:function () {
26                 this.number2 = 100
27             }
28         }
29     })

父组件向子组件传值,在子组件中先定义属性在传值

全局组件中通过props以数组方式接收传递的参数

全局组件中,data方法必须在return中将父组件传过来的参数重新定义成子组件的属性,避免父、子组件传值相互不影响,起到隔离作用

因为num2和num3是父组件向子组件的传递参数,所以使用this.xxxx引用

原文地址:https://www.cnblogs.com/bugoobird/p/13340034.html