六.web框架-----------VUE语法使用组件(六)

一 .VUE语法使用组件

https://cn.vuejs.org/v2/guide/routing.html

https://cn.vuejs.org/v2/guide/components.html

https://www.jianshu.com/p/9dda283b7482

1.组件语法编写方式

<body>
    <div id="box">
         <aaa></aaa>
    </div>
    <script>
        // extend表示继承出来一小小vue对象
        var Aaa=Vue.extend({
            template:‘<h3>我是标题3</h3>‘  //template  表示模板
        });

        var a=new Aaa();
        alert(a);

        var vm=new Vue({
            el:‘#box‘,
            data:{
                bSign:true
            }
        });
    </script>
</body>
</html>

<body>
    <div id="box">
        <aaa></aaa>
    </div>

    <script>
        //全局组件
        //extend表示继承出来一小小vue对象
        var Aaa=Vue.extend({
            template:‘<h3>我是标题3</h3>‘ //template  表示模板
        });

        Vue.component(‘aaa‘,Aaa);    //component表示组件   就是挂起

        var vm=new Vue({
            el:‘#box‘,
            data:{
                bSign:true
            }
        });

    </script>
</body>
</html>


<!DOCTYPE html>
<html lang="en">

<body>
    <div id="box">
        <aaa></aaa>
    </div>

    <script>
           //组件里面放数据
        var Aaa=Vue.extend({
            template:‘<h3>{{msg}}</h3>‘,
            data(){
                return {   //    *组件里面放数据: data必须是函数的形式,函数必须返回一个对象(json)

                    msg:‘ddddd子组件‘
                }
            }
        });

        var vm=new Vue({
            el:‘#box‘,
            data:{
                bSign:true
            },
            components:{ //局部组件挂载
                aaa:Aaa
            }
        });

    </script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">

<body>
    <div id="box">
        <my-aaa></my-aaa>
    </div>

    <script>
        var Aaa=Vue.extend({
            template:‘<h3>{{msg}}</h3>‘,//表示模板
            data(){
                return {
                    msg:‘我是子组件哈哈哈哈哈哈啊哈哈‘
                }
            }
        });

        var vm=new Vue({
            el:‘#box‘,
            data:{
                bSign:true
            },
            components:{ //局部组件
                ‘my-aaa‘:Aaa
            }
        });

    </script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">

<body>
    <div id="box">
        <my-aaa></my-aaa>
    </div>

    <script>
        Vue.component(‘my-aaa‘,{
            template:‘<strong>我是组件哈哈哈哈哈</strong>‘
        });

        var vm=new Vue({
            el:‘#box‘
        });

    </script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">

<body>
    <div id="box">
        <my-aaa></my-aaa>
    </div>

    <script>
        var vm=new Vue({
            el:‘#box‘,
            components:{
                ‘my-aaa‘:{
                    data(){
                        return {
                            msg:‘welcome vue‘
                        }
                    },
                    methods:{
                        change(){
                            this.msg=‘changed‘;
                        }
                    },
                    template:‘<h2 @click="change">标题{{msg}}</h2>‘
                }
            }
        });

    </script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">

<body>
    <div id="box">
        <aaa></aaa>
    </div>

    <script>
        var Aaa=Vue.extend({
            data(){
                return {
                    msg:‘我是标题^^‘            //data必须是函数的形式,函数必须返回一个对象(json)
                };
            },
            template:‘<h3>{{msg}}</h3>‘     //template  表示模板
        });

        Vue.component(‘aaa‘,Aaa);          //component表示组件   就是挂起

        var vm=new Vue({
            el:‘#box‘,
            data:{
                bSign:true
            }
        });

    </script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">

<body>
    <div id="box">
        <aaa></aaa>
    </div>

    <script>
        var Aaa=Vue.extend({
            data(){
                return {
                    msg:‘我是标题^^‘ //data必须是函数的形式,函数必须返回一个对象(json)
                };
            },
            methods:{         //组件配合事件
                change(){
                    this.msg=‘changed‘
                }
            },
            template:‘<h3 @click="change">{{msg}}</h3>‘  //template  表示模板
        });

        Vue.component(‘aaa‘,Aaa);//component表示组件   就是挂起

        var vm=new Vue({
            el:‘#box‘,
            data:{
                bSign:true
            }
        });

    </script>
</body>
</html>

  

2. 组件的模板

<!DOCTYPE html>
<html lang="en">

<body>
    <div id="box">
        <my-aaa></my-aaa>
    </div>

    <script type="x-template" id="aaa">
        <h2 @click="change">标题2->{{msg}}</h2>
        <ul>
            <li>1111</li>
            <li>222</li>
            <li>3333</li>
            <li>1111</li>
        </ul>
    </script>

    <script>
        var vm=new Vue({
            el:‘#box‘,
            components:{
                ‘my-aaa‘:{
                    data(){
                        return {
                            msg:‘welcome vue‘
                        }
                    },
                    methods:{
                        change(){
                            this.msg=‘changed‘;
                        }
                    },
                    template:‘#aaa‘
                }
            }
        });

    </script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">

<body>
    <div id="box">
        <my-aaa></my-aaa>
    </div>

    <template id="aaa">  <!--//模板     组件配合模板-->
        <h1 >标题1</h1>
        <ul>
            <li v-for="val in arr">
                {{val}}
            </li>
        </ul>
        <p @click="change">{{msg}}</p>
    </template>

    <script>
        var vm=new Vue({
            el:‘#box‘,
            components:{
                ‘my-aaa‘:{
                    data(){
                        return {
                            msg:‘welcome vue‘,
                            arr:[‘apple‘,‘banana‘,‘orange‘]
                        }
                    },
                    methods:{
                        change(){
                            this.msg=‘changed‘;
                        }
                    },
                    template:‘#aaa‘
                }
            }
        });

    </script>
</body>
</html>

 

3. 组件 父子组件(父子参数获取实例)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <style>
    </style>
</head>
<body>
    <div id="box">
        <aaa>
        </aaa>

        <bbb></bbb>
    </div>

    <script>
        var vm=new Vue({
            el:‘#box‘,
            data:{
              msg:‘welcom to‘
            },
            components:{
                ‘aaa‘:{
                    template:‘<h2>我是aaa组件</h2><bbb></bbb>‘,
                    components:{
                        ‘bbb‘:{
                            template:‘<h3>我是bbb组件</h3>‘
                        }
                    }
                }
            }
        });

    </script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <style>
    </style>
</head>
<body>
    <div id="box">
        <aaa>
        </aaa>
    </div>

    <script>
        var vm=new Vue({
            el:‘#box‘,
            data:{
                a:‘aaa‘
            },

            components:{
                ‘aaa‘:{
                    data(){
                        return {
                            msg:‘我是父组件的数据‘
                        }
                    },//vue默认情况下,子组件也没法访问父组件数据
                    template:‘<h2>我是aaa组件{{msg}}</h2><bbb></bbb>‘,
                    components:{
                        ‘bbb‘:{
                            template:‘<h3>我是bbb组件-></h3>‘
                        }
                    }
                }
            }
        });

    </script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <style>
    </style>
</head>
<body>
    <div id="box">
        <aaa>
        </aaa>
    </div>

    <template id="aaa">
        <h1>11111</h1>
        <bbb :mmm="msg2"></bbb>
    </template>
    <script>
//        祖父组件数据互通
        var vm=new Vue({
            el:‘#box‘,
            data:{
                a:‘aaa‘
            },

//            2. 父级获取子级数据
//    *子组件把自己的数据,发送到父级
            components:{
                ‘aaa‘:{
                    data(){
                        return {
                            msg2:‘我是父组件的数据‘
                        }
                    },
                    template:‘#aaa‘,
                    components:{
                        ‘bbb‘:{
                            props:[‘mmm‘],
                            template:‘<h3>我是bbb组件->{{mmm}}</h3>‘
                        }
                    }
                }
            }
        });

    </script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <style>
    </style>
</head>
<body>
    <div id="box">
        <aaa>
        </aaa>
    </div>

    <template id="aaa">
        <h1>11111</h1>
        <bbb :mmm="msg2" :my-msg="msg"></bbb>
    </template>

    <script>
        var vm=new Vue({
            el:‘#box‘,
            data:{
                a:‘aaa‘
            },
            components:{
                ‘aaa‘:{
                    data(){
                        return {
                            msg:111,
                            msg2:‘我是父组件的数据‘
                        }
                    },
                    template:‘#aaa‘,
                    components:{
                        ‘bbb‘:{
                            props:[‘mmm‘,‘myMsg‘],//子组件之内
                            template:‘<h3>我是bbb组件->{{mmm}} <br> {{myMsg}}</h3>‘
                        }
                    }
                }
            }
        });

    </script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <style>
    </style>
</head>
<body>
    <div id="box">
        <aaa>
        </aaa>
    </div>

    <template id="aaa">
        <h1>11111</h1>
        <bbb :mmm="msg2" :my-msg="msg"></bbb>
    </template>
    <script>
        var vm=new Vue({
            el:‘#box‘,
            data:{
                a:‘aaa‘
            },
            components:{
                ‘aaa‘:{
                    data(){
                        return {
                            msg:111,
                            msg2:‘我是父组件的数据‘
                        }
                    },
                    template:‘#aaa‘,
                    components:{
                        ‘bbb‘:{
                            props:{
                                ‘m‘:String,
                                ‘myMsg‘:Number
                            },
                            template:‘<h3>我是bbb组件->{{mmm}} <br> {{myMsg}}</h3>‘
                        }
                    }
                }
            }
        });

    </script>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <style>
    </style>
</head>
<body>
    <div id="box">
        <aaa>
        </aaa>
    </div>

    <template id="aaa">
        <span>我是父级 -> {{msg}}</span>
        <bbb @child-msg="get"></bbb>
    </template>
    <template id="bbb">
        <h3>子组件-</h3>
        <input type="button" value="send" @click="send">
    </template>
    <script>
        var vm=new Vue({
            el:‘#box‘,
            data:{
                a:‘aaa‘
            },
            components:{
                ‘aaa‘:{
                    data(){
                        return {
                            msg:111,
                            msg2:‘我是父组件的数据‘
                        }
                    },
                    template:‘#aaa‘,
                    methods:{
                        get(msg){
                            // alert(msg);
                            this.msg=msg;
                        }
                    },
                    components:{
                        ‘bbb‘:{
                            data(){
                                return {
                                    a:‘我是子组件的数据‘
                                }
                            },
                            template:‘#bbb‘,
                            methods:{
                                send(){
                                    this.$emit(‘child-msg‘,this.a);
                                }
                            }
                        }
                    }
                }
            }
        });

    </script>
</body>
</html>

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <style>
    </style>
</head>
<body>
    <div id="box">
        <aaa>
        </aaa>
    </div>

    <template id="aaa">
        <h1>11111</h1>
        <bbb :mmm="msg2" :my-msg="msg"></bbb>
    </template>
    <script>
        var vm=new Vue({
            el:‘#box‘,
            data:{
                a:‘aaa‘
            },
            components:{
                ‘aaa‘:{
                    data(){
                        return {
                            msg:111,
                            msg2:‘我是父组件的数据‘
                        }
                    },
                    template:‘#aaa‘,
                    components:{
                        ‘bbb‘:{
                            props:{    // 父组件传子组件数据时 必须指定数据类型
                                ‘mmm‘:String,
                                ‘myMsg‘:Number
                            },
                            template:‘<h3>我是bbb组件->{{mmm}} -------------{{myMsg}}</h3>‘
                        }
                    }
                }
            }
        });

    </script>
</body>
</html>
<!---->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <style>
    </style>
</head>
<body>
    <div id="box">
        <aaa>
        </aaa>
    </div>
<!--2. 父级获取子级数据
    *子组件把自己的数据,发送到父级

    vm.$emit(事件名,数据);

    v-on:    @-->
    <template id="aaa">
        <span>我是父级 -> {{msg}}</span>
        <bbb @child-msg="get"></bbb>
    </template>
    <template id="bbb">
        <h3>子组件-</h3>
        <input type="button" value="send" @click="send">
    </template>
    <script>
        var vm=new Vue({
            el:‘#box‘,
            data:{
                a:‘aaa‘
            },
            components:{
                ‘aaa‘:{
                    data(){
                        return {
                            msg:111,
                            msg2:‘我是父组件的数据‘
                        }
                    },
                    template:‘#aaa‘,
                    methods:{
                        get(msg){
                            // alert(msg);
                            this.msg=msg;
                        }
                    },
                    components:{
                        ‘bbb‘:{
                            data(){
                                return {
                                    a:‘我是子组件的数据‘
                                }
                            },
                            template:‘#bbb‘,
                            methods:{
                                send(){
                                    this.$emit(‘child-msg‘,this.a);
                                }
                            }
                        }
                    }
                }
            }
        });

    </script>
</body>
</html>

 

动态组件使用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script src="bower_components/vue/dist/vue.js"></script>
    <style>
    </style>
</head>
<body>
    <div id="box">
        <input type="button" @click="a=‘aaa‘" value="aaa组件">
        <input type="button" @click="a=‘bbb‘" value="bbb组件">
        <component :is="a"></component>  <!--:is表示你是谁-->
    </div>

    <script>
        var vm=new Vue({
            el:‘#box‘,
            data:{
                a:‘aaa‘
            },
            components:{
                ‘aaa‘:{
                    template:‘<h2>我是aaa组件</h2>‘
                },
                ‘bbb‘:{
                    template:‘<h2>我是bbb组件</h2>‘
                }
            }
        });

    </script>
</body>
</html>

 

4. 组件定义 模板写法 ---  父子组件通信(2.0vue)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>
    <script src="vue2.js"></script>
    <script>
        //      最好用vue1.0版定义组件
//          Vue.extend    这种方式,在2.0里面有,但是有一些改动,这种写法,即使能用,咱也不用——废弃
//
//    Vue.component(组件名称,{    在2.0继续能用
//        data(){}
//        methods:{}
//        template:
//    });
//==============================================
/*2.0推出一个组件,简洁定义方式:
    var Home={
        template:‘‘        ->   Vue.extend()
    };*/
        var Home={  //这是2.0组件
            template:‘#aaa‘
        };  //Vue.extend()

        Vue.component(‘my-aaa‘,Home);

        window.onload=function(){
            new Vue({
                el:‘#box‘,
                data:{
                    msg:‘welcome vue2.0‘
                }
            });
        };
    </script>
</head>
<body>
    <template id="aaa">
        <div>
            <h3>我是组件</h3>
            <strong>我是加粗标签</strong>
            <strong>我是2.0哈哈哈哈哈</strong>
        </div>
    </template>
    <div id="box">
        <my-aaa></my-aaa>
        {{msg}}
    </div>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>
    <script src="vue2.js"></script>
    <script>
//      最好用vue1.0版定义组件
//          Vue.extend    这种方式,在2.0里面有,但是有一些改动,这种写法,即使能用,咱也不用——废弃
//
//    Vue.component(组件名称,{    在2.0继续能用
//        data(){}
//        methods:{}
//        template:
//    });
//==============================================
/*2.0推出一个组件,简洁定义方式:
    var Home={
        template:‘‘        ->   Vue.extend()
    };*/
        var Home={  //这是2.0组件
            template:‘#aaa‘
        };  //Vue.extend()

        window.onload=function(){
            new Vue({
                el:‘#box‘,
                data:{
                    msg:‘welcome vue2.0‘
                },
                components:{
                    ‘aaa‘:Home
                }
            });
        };
    </script>
</head>
<body>
    <template id="aaa">
        <div>
            <h3>我是组件</h3>
            <strong>我是加粗标签</strong>
        </div>
    </template>
    <div id="box">
        <aaa></aaa>
        {{msg}}
    </div>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>

    <script src="vue1.js"></script>
    <script>
//      这是vue1.0支持   2.0显示不出来    2.0必须是现在:  必须有根元素,包裹住所有的代码
        Vue.component(‘my-aaa‘,{
            template:‘<h3>我是组件</h3><strong>我是加粗标签</strong>‘ //vue2.0在每个组件模板,不在支持片段代码
        });

        window.onload=function(){
            new Vue({
                el:‘#box‘,
                data:{
                    msg:‘welcome vue2.0‘
                }
            });
        };
    </script>
</head>
<body>
    <div id="box">
        <my-aaa></my-aaa>
        {{msg}}
    </div>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>
    <script src="vue2.js"></script>
    <script>
        Vue.component(‘my-aaa‘,{
            template:‘#aaa‘  //vue2.0现在:  必须有根元素,包裹住所有的代码
        });

        window.onload=function(){
            new Vue({
                el:‘#box‘,
                data:{
                    msg:‘welcome vue2.0‘
                }
            });
        };
    </script>
</head>
<body>
    <template id="aaa">
        <div>
            <h3>我是组件</h3>
            <strong>我是加粗标签</strong>
        </div>
    </template>
    <div id="box">
        <my-aaa></my-aaa>
        {{msg}}
    </div>
</body>
</html>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>

    <!--这是vue1.0的方法 子父组件通信-->
    <script src="vue1.js"></script>
    <script>
//      组件通信:
//    vm.$emit()
//    vm.$on();
//
//    父组件和子组件:
//
//    子组件想要拿到父组件数据:
//        通过  props
//
//    1.0,子组件可以更改父组件信息,可以是同步  sync

        window.onload=function(){
            new Vue({
                el:‘#box‘,
                data:{
                    a:‘我是父组件数据‘
                },
                components:{
                    ‘aaa‘:{
                        props:[‘bb‘],//    子组件想要拿到父组件数据:通过  props
                        template:‘#child‘,
                        methods:{
                            change(){
                                this.bb=‘被更改了‘
                            }
                        }
                    }
                }
            });
        };
    </script>
</head>
<body>
    <template id="child">
        <div>
            <span>我是子组件</span>
            <input type="button" value="按钮" @click="change">
            <strong>{{bb}}</strong>
        </div>
    </template>

    <div id="box">
        父级: ->{{a}}
        <br>
        <aaa :bb.sync="a"></aaa>  <!-- //sync  表示同步-->
    </div>
</body>
</html>

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>

    <script src="vue2.js"></script>
    <script>
        //    现在,不允许直接给父级的数据,做赋值操作
//
//    问题,就想更改:
//        a). 父组件每次传一个对象给子组件, 对象之间引用    √
//        b). 只是不报错, mounted中转
        window.onload=function(){
            new Vue({
                el:‘#box‘,
                data:{
                    a:‘我是父组件数据‘
                },
                components:{
                    ‘child-com‘:{
                        props:[‘msg‘],
                        template:‘#child‘,
                        methods:{
                            change(){
                                this.msg=‘被更改了‘
                            }
                        }
                    }
                }
            });
        };
    </script>
</head>
<body>
    <template id="child">
        <div>
            <span>我是子组件</span>
            <input type="button" value="按钮" @click="change">
            <strong>{{msg}}</strong>
        </div>
    </template>

    <div id="box">
        父级: ->{{a}}
        <br>
        <child-com :msg="a"></child-com>
    </div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>

    </style>

    <script src="vue2.js"></script>
    <script>
        //    现在,不允许直接给父级的数据,做赋值操作
//
//    问题,就想更改:
//        a). 父组件每次传一个对象给子组件, 对象之间引用    √
//        b). 只是不报错, mounted中转
        window.onload=function(){
            new Vue({
                el:‘#box‘,
                data:{
                    a:‘我是父组件数据‘
                },
                components:{
                    ‘child-com‘:{
                        props:[‘msg‘],
                        template:‘#child‘,
                        methods:{
                            change(){
                                this.msg=‘被更改了‘
                            }
                        }
                    }
                }
            });
        };
    </script>
</head>
<body>
    <template id="child">
        <div>
            <span>我是子组件</span>
            <input type="button" value="按钮" @click="change">
            <strong>{{msg}}</strong>
        </div>
    </template>

    <div id="box">
        父级: ->{{a}}
        <br>
        <child-com :msg="a"></child-com>
    </div>
</body>
</html>

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>智能社——http://www.zhinengshe.com</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <style>
    /*现在,不允许直接给父级的数据,做赋值操作

    问题,就想更改:
        a). 父组件每次传一个对象给子组件, 对象之间引用    √
        b). 只是不报错, mounted中转*/

    </style>
    <script src="vue2.js"></script>
    <script>
//      <!--这是vue2.0的方法 子父组件通信-->
        window.onload=function(){
            new Vue({
                el:‘#box‘,
                data:{
                    giveData:{
                        a:‘我是父组件数据‘
                    }
                },
                components:{
                    ‘childcom‘:{
                        prop-s:[‘msg‘],
                        template:‘#child‘,
                        methods:{
                            change(){
                                //this.msg=‘被更改了‘
                                this.msg.a=‘被改了‘;
                            }
                        }
                    }
                }
            });
        };
    </script>
</head>
<body>
    <template id="child">
        <div>
            <span>我是子组件</span>
            <input type="button" value="按钮" @click="change">
            <strong>{{msg.a}}</strong>
        </div>
    </template>

    <div id="box">
        父级: ->{{giveData.a}}
        <br>
        <child-com :msg="giveData"></child-com>
    </div>
</body>
</html>

原文地址:https://www.cnblogs.com/lovershowtime/p/11666171.html

时间: 2024-08-09 03:13:13

六.web框架-----------VUE语法使用组件(六)的相关文章

Python进阶(三十六)-Web框架Django项目搭建全过程

Python进阶(三十六)-Web框架Django项目搭建全过程 ??IDE说明: Win7系统 Python:3.5 Django:1.10 Pymysql:0.7.10 Mysql:5.5 ??Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! Django 特点 强大的数据库功能 用python的类继承,几行代码就可以拥有一个丰富,动态的数据库操作接口(API),如果需要你也能执行SQL语句. 自带的强大的后台功能 几行简单的代码就让你的网

Web框架之Django_08 重要组件(form组件、cookie和session组件)

摘要: form组件 cookie组件 session组件 一.form组件 form介绍我们之前在html页面中利用form表单向后端提交数据时候,都需要对用户的输入进行校验,比如校验用户是否输入正确(长度.格式...),如果用户输入的内容有误则需要在相应的位置显示对应的错误信息来提醒用户,提高前端的交互效率.Django form组件就是实现上述功能的一个功能组件.from组件主要功能有:# 生成页面可用的html标签# 对用户条件的数据进行校验# 保留上次输入内容 先来看看自己手写注册功能

Python web框架总结

web框架总结 前提 一个web框架需要包含的组件或者功能有: router orm request and response cookies and session template engine wsgi app and wsgi server wsgi 首先要了解WSGI的相关知识,如下: web server:指的是软件程序,它从客户端接受请求,然后返回一个Response,需要注意的是它不创建Response,web app才是创建Response的主体. web app:根据url来

基于Extjs的web表单设计器 第六节——界面框架设计

基于Extjs的web表单设计器 基于Extjs的web表单设计器 第一节 基于Extjs的web表单设计器 第二节——表单控件设计 基于Extjs的web表单设计器 第三节——控件拖放 基于Extjs的web表单设计器 第四节——控件拖放 基于Extjs的web表单设计器 第五节——数据库设计 基于Extjs的web表单设计器 第六节——界面框架设计 基于Extjs的web表单设计器 第七节——取数公式设计 基于Extjs的web表单设计器 第八节——表单引擎设计 这一节我给大家介绍一下表单设

web前端基础知识-(六)web框架

一.web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python #coding:utf-8 import socket def handle_request(client): buf = client.recv(1024) client.send("HTTP/1.1 200 OK\r\n\r\n") client.send("Hello, Seven"

[Python笔记]第十六篇:web框架之Tornado

Tornado是一个基于python的web框架,xxxxx 安装 python -m pip install tornado 第一个Tornado程序 安装完毕我们就可以新建一个app.py文件,放入下面的代码直接运行就可以了,然后在浏览器访问127.0.0.1:8888 import tornado.ioloop import tornado.web class MainHandler(tornado.web.RequestHandler): def get(self): self.writ

第二百五十六节,Web框架

Web框架 Web框架本质 众所周知,对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 举例: #!/usr/bin/env python #coding:utf-8 import socket #导入单线程通讯模块 def handle_request(client): #发送内容函数 buf = client.recv(1024) #设置最大传输字节 client.sendall(bytes("HTTP/1.1 200 OK\r\n\r

工作流,WEB框架,UI组件网络收集整理

工作流,WEB框架,UI组件网络收集整理 在博客园上逛了好多年,随手收录了一些工作流,WEB开发框架,UI组件,现在整理一下与大家分享. 由于个人能力与精力有限,望各位园友在评论中补充,我将全部整理到正文: ? 工作流篇 RoadFlow工作流(收费):                  http://www.cqroad.cn/WorkFlow 驰骋工作流引擎 ccflow                       https://www.oschina.net/p/ccflow YbSof

web前端之JavaScript高级程序设计六:事件

web前端之JavaScript高级程序设计六:事件 JavaScript 与 HTML 之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间.可以使用侦听器(或处理程序)来预订事件,以便事件发生时执行相应的代码.这种在传统软件工程中被称为观察员模式的模型,支持页面的行为(JavaScript 代码)与页面的外观(HTML 和 CSS 代码)之间的松散耦合. 事件流: 事件流描述的是从页面中接收事件的顺序.但有意思的是, IE 和 Netscape 开发团队居然提出了