zoukankan      html  css  js  c++  java
  • Vue.js 基础学习之组件

     什么是组件:组件是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。在较高层面上,组件是自定义的元素,Vue.js的编译器为它添加特殊功能。在有些情况下,组件也可以是原生HTML元素的形式,以is特性扩展。

    创建全局组件

    <div id="seg1">
            <alert></alert>
        </div>
        <div id="seg2">
            <alert></alert>
        </div>
    Vue.component('alert',{
            template : '<button @click="on_click">点我</button>',
            methods : {
                on_click : function(){
                    alert("good");
                }
            },
        });
        new Vue({
            el : '#seg1',
        });
        new Vue({
            el : '#seg2',
        })

    这个组件的作用是在目标中添加一个Button,当点击这个Button时,alert出一个good。由于是全局组件,所以只要是new Vue出来的都可以使用

    也可以将创建与注册分开,

    先用Vue.rxtend创建一个组件

    var myComponent = Vue.extend({
            template : '<button @click="on_click">点我</button>',
            methods : {
                on_click : function(){
                    alert("good");
                },
            },
        });

    然后注册

    Vue.component('alert',myComponent);

    分开会让人看起来更清晰

    接下来是局部组件的创建

    new Vue({
            el : '#app',
            components :{
                alert :{
                    template : '<button @click="on_click">点我</button>',
                    methods : {
                    on_click : function(){
                        alert("good");
                },
            },
            },
            } 
        })

    这时,这个组件就只能在app中使用了

    接下来我们用组件做一个点赞的button,当button点击第一下点赞数就加一,再点击一下,点赞数就减一

    new Vue({
             el : '#app',
             components : {
                 like : {
                     template : '<button @click="on_click">赞{{like_counts}}</button>',
                     data : function(){
                         return {
                             like_counts : 10,
                             liked : false,
                         };
                     },
                     methods : {
                         on_click : function(){
                             if(!this.liked){
                                 this.like_counts += 1;
                                 this.liked = !this.liked;
                             }
                             else{
                                 this.like_counts -= 1;
                                 this.liked = !this.liked;
                             }
    
                         }
                     },
    
                 }
             }
         });

    在app中加入一个like标签

    <div id="app">
            <like></like>
        </div>

    这样,初始点赞数为10,点击一下点赞数为11,再点击一下点赞数又为10,我们还可以为其添加一个样式,在点赞时让button变成pink色

    首先给这个button绑定class

    template : '<button :class="{liked : liked}" @click="on_click">赞{{like_counts}}</button>',

    这个class中的第一个liked为类名,第二个liked为data中的liked,这里的意思是当第二个liked值为true时,给这个类加上第一个liked类

    然后在样式用加入这个类的样式

    <style>
            .liked {
                background-color: pink;
            }
        </style>

    这样我们的一个点赞按钮就完成了。

    这里我有一个困惑,组件之内的data在组件之外是访问不到的,那么如果我想要获得组件里面的某个数据,我应该如何去做?

  • 相关阅读:
    白话数字签名(3)——Web程序中的数字签名(转)
    Android下基于XML的Graphics (转)
    js获取html页面传参
    nodejs教程:安装express及配置app.js文件
    Android中的Selector(转)
    org.apache.tools.zip.*和org.apache.commons.httpclient.*实现远程文件打包下载,支持中文文件名(转)
    EditText中进行文字截获和事件监听——(转载)
    常用js验证和常用方法汇总
    解决AVD的“SDL_app:emulator.exe应用程序错误”
    白话数字签名(2)——软件&设备(转)
  • 原文地址:https://www.cnblogs.com/huzhuo/p/7470048.html
Copyright © 2011-2022 走看看