微信小程序 - 组件

官方文档见:

https://mp.weixin.qq.com/debug/wxadoc/dev/framework/custom-component/

我们的封装:

var BaseComponentOption = require("../../utils/BaseComponentOption");
var option = BaseComponentOption.init({
  properties: {
    //说明文字
    label: {
      type: String
    },
    //最小值限制
    min: {
      type: Number,
      value: 0
    },
    //最大值
    max:{
      type:Number,
      value:9999
    },
    // 当前值
    value: {
      type: String,
      value: ""
    }

  },
  //传参对象,和 官方文档一致,只是内部做了封装,默认提供一个 entity:Object , style:String 的参数
  attached() {

  },
  ready() {

  },
  methods:{
    abate(e){
      if (!isNaN(this.data.min)) {
        if (this.data.min >= this.data.value) {
          return;
        }
      }
      console.log(this.data.value);
      this.data.value--;
      this.setData(this.data);
      this.triggerEvent('change', this.data.value)  
    },
    add(e){
      if(this.data.max){
        if (this.data.max<=this.data.value){
          return;
        }
      }
      this.data.value++;
      this.setData(this.data) 
      this.triggerEvent('change', this.data.value)  
    }
  }
});

/**
 * 自定义组件  线路在列表中的展示
 */
Component(option)
BaseComponentOption 中 默认封装了:
属性 entity 对应外部传递过来的 对象, 类型 Object
style 用于外部自定义样式, 预留字段
方法 showDefaultImage 用于默认图片的处理
其他: 只要按照 BaseComponentOption.init 方式去初始化组件,即可有无限可能
值得注意的是: 组件中定义的 样式,只在组件内部可用,不会影响到外部
同样,外部Page的样式也不会干扰到组件
  所以,如果需要使用 全局样式
需要单独 require外部css
<tag>
内部内容
</tag>
这里的标签内内部内容,在组件wxml中使用<slot /> 标签表示
这里的封装暂时很简单,只有生命周期的封装, 支持mixins请见官方文档
目前的方案是,组件只负责展示,尽量 不做数据的处理,所有的处理在外部完成,减少技术复杂度,尽快上手