zoukankan      html  css  js  c++  java
  • Vue 学习(组件相关)

    实现组件三个步骤

       

    1. 组件构造器,Vue.extend(). 这个相当于模板,模板是干什么的呢?理解为 你看到的都是这货渲染出来的,它里面有data,template之类的
    2. 注册组件,Vue.component("name",module)。这货相当于打标签,上一步创建的,他给命名,第二个参数如果是对象的话,可以省去第一步
    3. 挂载组件

         

       

    注册全局组件 Vue.component("my-component",{

    //选项

    })

       

    局部组件 var Child={

    template: "<div>我是子组件</div>"

    }

    ###

       

    可以将子组件注册到父组件中

       

    var Parent=Vue.extend({

    template:"<div>我是你爸爸<my-child></my-child></div>",

    components: {

    'my-child': Child

    }

    });

       

    注意顺序!!子组件一定要声明在父组件之前

       

    上面这个错误是因为没有加,

    ```

    var Test=Vue.extend({

    template:"<div>123</div>"

    })

    var app=new Vue({

    el:"#app2",

    data:function(){

    return count;

    }

    components:{

    "Count":Test

    }

    })

       

    ```

    这样会JJ 。上面代码中还有问题 data只能是函数,指的是在组件中,这个属于实例了,不能那么写。

       

            <div id="app2">
                    <Count></Count>
                    <Count></Count>

                    <Count></Count>
            </div>
            <template id='count'>
                    <div>
                            <button v-on:click="count+=1">{{count}}</button>
                    </div>
            </template>

       

       

            var Test=Vue.extend({
                    template:"#count",        
                    data:function(){
                                    return {count:0};
                            }
            })
            var app=new Vue({
                    el:"#app2",
                    components:{
                            "Count":Test
                    }
            })

       

    父子组件之间通信

       

       

    屏幕剪辑的捕获时间: 2017/1/11 20:46

       

    这样写是错误的,components其实就相当于Vue.component({ })的简写

       

    <div id="app3">
    <props-test v-bind:name="data1" v-bind:age="data2"></props-test>
    </div>

       

       

            var app3=new Vue({
                    el:"#app3",
                    data:{
                            data1:"JD",
                            data2:"21"
                    },
                    components:{
                            "props-test":{
                                    template:"#propsTest",
                                    props:["name","age"]
                            }
                    }
            })

    思考下整个过程中数据流怎么走?

    首先在html模板中绑定实例中的数据 --> 在模板中声明要传入的props(一个数组),这个props将出现在

    <my-component ></my-component>中 -->接着在具体模板中就会出现props。实例相当于在app3之上,父组件就是app3

       

       

    <child-component v-bind:子组件prop="父组件数据属性"></child-component>

       

       

    <template></template>一定要写在 #app 外,愚蠢的错误!

       

       

       

    子组件影响父组件

    通过v-on来触发 相当于自定义一个方法,当这个方法触发时,影响父组件。

       

    ```

            <div id="app5">
      
                  <h1>
    父组件通过在子组件上的v-on监听变化</h1>
                    {{totalnum}}
                    <app5-v-on v-on:incrent="total"></app5-v-on>
                    <app5-v-on v-on:incrent="total"></app5-v-on>
            </div>
            <template id="app5tpl">
                   
     <div>

                            <button v-on:click="incrent">{{count}}</button>
                    </div>
            </template>

       

    Vue.component("app5-v-on",{

    template:"#app5tpl",

    data:function(){

    return {

    count:0

    }

    },

    methods:{

    incrent:function(){

       

    this.count=+1;

    this.$emit("incrent")

    }

    }

    })

    var app5=new Vue({

    el:"#app5",

    data:{

    totalnum:0

    },

    methods:{

    total:function(){

    this.totalnum+=1

    }

    }

    })

       

    ```

       

       

  • 相关阅读:
    Flex AIR应用GPS定位功能(Android和IOS)
    Flex AIR应用拍照功能(Android和IOS版本)
    读取Flex AIR应用程序设置
    查看本机开放的端口号,查看某个端口号是否被占用,查看被占用的端口号被哪个进程所占用,如何结束该进程
    Eclipse设置默认编码为UTF-8
    Eclipse使用教程之精华篇
    hdu 1829 分组并查集
    hdu 1316高精度
    hdu 4287 字典树问题
    hdu 1867 kmp共工前后缀串问题
  • 原文地址:https://www.cnblogs.com/liuestc/p/6286791.html
Copyright © 2011-2022 走看看