微信小程序的创建组件的使用

这些都是引入组件,使用,然后显示的。

我把两个button的界面组件的文件放出来把。这个是wxml

<view class="wx-popup" hidden="{{flag}}">
  <view class='popup-container'>
    
    <view class="wx-popup-con">{{content}}</view>
    <view class="wx-popup-btn">
      <text class="btn-no" bindtap='_error'>{{btn_no}}</text>
      <text class="btn-ok" bindtap='_success'>{{btn_ok}}</text>
    </view>
  </view>
</view>

组件是显示整个界面的。

这个是json文件

{
  "component": true,
  "usingComponents": {}
}

component为true的意思是,注册改组件的意思。

usingComponents,在这个组件里面使用其他组件。

下面的是该组件的css文件

/* components/popup/popup.wxss */


/* component/popup.wxss */

.wx-popup {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, .5);
    z-index: 999;
}

.popup-container {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 560rpx;
    height: 248rpx;
    max-width: 600rpx;
    border: 2rpx solid #ccc;
    border-radius: 20rpx;
    box-sizing: bordre-box;
    transform: translate(-50%, -50%);
    overflow: hidden;
    background: rgba(255, 255, 255, 1);
    z-index: 1000;
}


/* .wx-popup-title {
    width: 100%;
    padding: 20rpx;
    text-align: center;
    font-size: 40rpx;
    border-bottom: 2rpx solid red;
} */

.wx-popup-con {
    display: block;
    margin: 60rpx 10rpx;
    text-align: center;
    font-size: 26rpx;
    font-family: PingFang-SC-Medium;
    font-weight: 500;
}

.wx-popup-btn {
    display: flex;
    justify-content: space-around;
    margin-bottom: 62rpx;
}

.wx-popup-btn text {
    display: block;
    align-items: center;
    justify-content: center;
    width: 200rpx;
    height: 60rpx;
    border: none;
    border-radius: 30rpx;
    text-align: center;
    line-height: 60rpx;
    font-size: 30rpx;
    color: #fff;
    background: -webkit-gradient(linear, left top, left bottom, from(#F98A59), to(#F97059));
    background: -moz-linear-gradient(top, #F98A59, #F97059);
    /* bottom: 62rpx;
    left: 55rpx;
    right: 55rpx; */
}

.btn-no {
    background: rgba(255, 255, 255, 1)!important;
    border: 1rpx solid rgba(249, 112, 89, 1)!important;
    color: rgba(249, 113, 89, 1)!important;
}

下面是该组件的js文件

Component({
    options: {
        multipleSlots: true // 在组件定义时的选项中启用多slot支持
    },
    /**
     * 组件的属性列表
     */
    properties: {
        title: { // 属性名
            type: String, // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)
            value: '标题' // 属性初始值(可选),如果未指定则会根据类型选择一个
        },
        // 弹窗内容
        content: {
            type: String,
            value: '内容'
        },
        // 弹窗取消按钮文字
        btn_no: {
            type: String,
            value: '取消'
        },
        // 弹窗确认按钮文字
        btn_ok: {
            type: String,
            value: '确定'
        }
    },

    /**
     * 组件的初始数据
     */
    data: {
        flag: true,
    },

    /**
     * 组件的方法列表
     */
    methods: {
        //隐藏弹框
        hidePopup: function() {
            this.setData({
                flag: !this.data.flag
            })
        },
        //展示弹框
        showPopup() {
            this.setData({
                flag: !this.data.flag
            })
        },
        /*
         * 内部私有方法建议以下划线开头
         * triggerEvent 用于触发事件
         */
        _error() {
            //触发取消回调
            this.triggerEvent("error")
        },
        _success() {
            //触发成功回调
            this.triggerEvent("success");
        }
    }
})

下面的图片是,组件放置的路径

然后在其他界面,应用改组件的使用呢,首先在json文件里面,引入路径,类似与html引入js的方式,要自定义组件的名字。

如图,左边是自定义的组件名字。

然后在这个界面的onLoad方法里面,加载获取组件。

//获得popup组件
        this.popup = this.selectComponent("#popup");

然后这是在这个界面调的js、方法

showDialog() {
        this.dialog.showDialog();
    },

    //取消事件
    _cancelEvent() {
        console.log('你点击了取消');
        this.dialog.hideDialog();
    },
    //确认事件
    _confirmEvent() {
        console.log('你点击了确定');
        this.dialog.hideDialog();
    },

这个是这个界面的wxml

<!--index.wxml-->
<view class="container">
  <view class="userinfo">
    <button bindtap="showPopup"> 点我 </button>
  </view>
  <popup id='popup'  
      content='您好,订单临近上门时间,请联系客服更改!' 
      btn_no='致电客服' 
      btn_ok='取消'
      bind:error="_error"  
      bind:success="_success">
  </popup>
</view>

 

posted @ 2019-02-26 20:08  正能量教官  阅读(663)  评论(0编辑  收藏  举报