前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >wx小程序尝试 组件扩展 mpx中

wx小程序尝试 组件扩展 mpx中

作者头像
yangdongnan
发布2019-03-28 15:53:06
4620
发布2019-03-28 15:53:06
举报
文章被收录于专栏:日常记录日常记录

创建一个创建对象添加一些方法

代码语言:javascript
复制
export default Behavior({
  definitionFilter ( defFields ) {
    // console.log(defFields);
    defFields.methods.messageBoxShow = function (val ) {
      this.isShowMessage = val;
    }
    defFields.methods.emit = function(str,params = {}){
      if ( typeof params !== 'object' ) {
        console.warn('params not Object')
        return
      }
      this.triggerEvent(str, {...params}, {})
    }
  }
})

behaviors 小程序提供的组件扩建对象

代码语言:javascript
复制
<template>
	<view class="messagebox" hidden="{{!show}}">
		<view class="messagebox-model"></view>
		<view class="messagebox-container" wx:class="{{ {'messagebox-container-show' : isShowMessage} }}">
			<view class="messagebox-title">
				{{title}}
			</view>
			<view class="messagebox-ctx">
				{{message}}
			</view>
			<view class="messagebox-btn">
				<view class="messagebox-btn-item bg-default" bind:tap="handleCancel">{{contextCancel}}</view>
				<view class="messagebox-btn-item bg-confirm" bind:tap="handleConfirm">{{contextConfirm}}</view>
			</view>
		</view>
	</view>
</template>
<script>
  import { createComponent } from '@mpxjs/core'
	import be from './message'
  createComponent({
    //上下组件节点关联
    relations : {},
    mixins : [],
    behaviors:[be],
    //组件值传递
    properties : {
			show:Boolean,
      title:{
        type:String,
        value:'提醒'
      },
			message:String,
      contextCancel:{
			  type:String,
				value:'取消'
			},
			contextConfirm:{
			  type:String,
				value:'确定'
			}
		},
		watch:{
      show(val){
        this.messageBoxShow(val)
			},
		},
    data : {
      isShowMessage : false,
    },
    computed : {
      classes () {
        return this.isShowMessage ? 'messagebox-show' : ''
      },
			classesScale () {
        return this.isShowMessage ? 'messagebox-container-show' : ''
      }
    },
    ready () {},
    methods : {
      handleConfirm(){
        this.emit('confirm')
			},
      handleCancel(){
        this.emit('cancel')
			},
		}
  })
</script>
<style lang="less">
	.messagebox {
		position: fixed;
		top: 0;
		left: 0;
		width: 100vw;
		&-container {
			margin: 40% auto 0;
			position: relative;
			width: 85%;
			z-index: 2003;
			background: #fff;
			transform: scale(0);
			box-sizing: border-box;
			-webkit-text-size-adjust: 100%;
			-webkit-animation: showScale .3s;
			animation: showScale .3s;
		}
		&-container-show {
			transform: scale(1);
		}
		&-title {
			padding: 20px;
			font-size: 16px;
			font-weight: bold;
			color: #1a1a1f;
			border-bottom: 1px solid #f1f1f1;
		}
		&-ctx {
			padding: 48px 0;
			width: 100%;
			text-align: center;
			font-size: 16px;
			color: #1a1a1f;
		}
		&-btn {
			display: -webkit-flex;
			display: flex;
			width: 100%;
			border-top: 1px solid #f1f1f1;
			&-item {
				-webkit-flex: 1;
				flex: 1;
				height: 50px;
				line-height: 50px;
				text-align: center;
				font-size: 16px;
				font-weight: bold;
				color: #1a1a1f;
			}
		}
	}
  @keyframes showScale {
		from{
			transform: scale(0);
		}
		to{
			transform: scale(1);
		}
	}
	.messagebox-model {
		position: absolute;
		top: 0;
		left: 0;
		width: 100vw;
		height: 100vh;
		background: rgba(0, 0, 0, .51);
	}
	.bg-default {
		background: #fff;
		color: #1a1a1f;
		border-color: #c9caca;
	}

	.bg-default:hover, bg-default:focus {
		background: #f1f1f1;
		color: #1a1a1f;
		border-color: #c9caca;
	}

	.bg-confirm {
		color: #fff;
		background-color: #37b48d;
	}
	.bg-confirm:hover, bg-confirm:focus {
		background: #309F7A;
		color: #fff;
		border-color: transparent;
	}
</style>
<script type="application/json">
	{}

</script>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年12月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档