美文网首页
微信小程序自定义组件(一)--Toast

微信小程序自定义组件(一)--Toast

作者: __Nancy | 来源:发表于2018-04-17 11:21 被阅读0次
场景:要写一个提示框不带icon的,能自动消失的。然而,官方给的并不能使用 wx.showToast和wx.showModal

Step1

新建一个 public 文件夹,用于存放我们以后开发中的所用组件,今天我们的目的是实现一个 弹框 组件,因此,我们在 public 组件中新建一个 toast 文件夹来存放我们的弹窗组件,此时你的项目结构应该如下:


67B5281C-998C-4BBD-A5C4-7699E03A5AF5.png

toast.wxml 代码

<view class="toast_content_box" wx:if="{{isShow}}">  
  <view class="toast_content">  
    <view class="toast_content_text">  
       {{dataText}}
    </view>  
  </view>  
</view> 

toasr.wxss 代码

/*toast*/ 
.toast_content_box {  
  display: flex;  
  width: 100%;  
  height: 100%;  
  justify-content: center;  
  align-items: center;  
  position: fixed;  
  z-index: 999;  
  top:0;
}  
.toast_content {    
  padding: 20rpx 40rpx;  
  background: rgba(0, 0, 0, 0.8);  
  border-radius: 20rpx;  
}  
.toast_content_text {  
  height: 100%;  
  width: 100%;  
  color: #fff;  
  font-size: 28rpx;  
  text-align: center;  
} 

toast.json 代码

{
  "component": true
}

toast.js 代码

Component({
  properties: {
    // 这里定义了innerText属性,属性值可以在组件使用时指定
    innerText: {
      type: String,
      value: 'default value',
    }
  },
  data: {
    dataText: '',
    isShow:false
  },
  methods: {
    //隐藏弹框
    hideDialog() {
      this.setData({
        isShow: !this.data.isShow
      })
    },
    //展示弹框
    showDialog(data) {
      this.setData({
        isShow: !this.data.isShow,
        dataText: data
      })
      var _this = this
      // 定时器关闭  
      setTimeout(function () {
        _this.hideDialog()
      }, 1000);
    }
  }
})

Step2

使用已注册的自定义组件前,首先要在页面的 json 文件中进行引用声明。此时需要提供每个自定义组件的标签名和对应的自定义组件文件路径

{
 "usingComponents": {
    "toast": "../public/toast/toast"
  }
}

Step3

这样,在页面的 wxml 中就可以像使用基础组件一样使用自定义组件。节点名即自定义组件的标签名,节点属性即传递给组件的属性值。

 <toast inner-text=""  id='toastDialog'></toast>

注意 这里面的 inner-text="" 可以传参

Step4

我写的这个组件提供了一个外面可以调的方法


66B65B23-276D-427B-8398-DD2BA09B87BF.png

在页面调用的时候,先需要在js获取组件

onReady: function () {
    //获得dialog组件 
    this.toastDialog = this.selectComponent("#toastDialog");//此处id和页面的 wxml中的id一致
  },

然后就可以在其他地方调用了

this.toastDialog.showDialog('自定义toast组件');

最终效果


1220270-20170816142404662-1065843149.png

相关文章

网友评论

      本文标题:微信小程序自定义组件(一)--Toast

      本文链接:https://www.haomeiwen.com/subject/ktqukftx.html