微信小程序中的View知识点

View篇

1: swiper(切换栏)
属性:
indicator-dots(是否显示面板指示点)
autoplay(是否自动切换)
interval(自动切换时间间隔) 
duration(滑动动画时长)
vertical(滑动方向是否为纵向)
circular(是否采用衔接滑动)
示例代码如下:

  
    
      
    
  

测试截图
微信小程序中的View知识点_第1张图片
2:scroll-view(可滚动视图区域)
属性:
scroll-x(是否可以水平滑动)
scroll-y(是否可以垂直滑动)
示例代码如下:

  //flex-direction:row属性和display: flex属性设置给view才能实现水平布局
    green
    red
    blue
  


  
    green
    red
    blue
  

测试截图
微信小程序中的View知识点_第2张图片
3:movable-view(可移动视图区域)
属性:
direction(属性值有all、vertical、horizontal、none)
scale(是否支持双指缩放,默认缩放手势生效区域是在movable-view内)
scale-min(定义缩放倍数最小值)
scale-max(定义缩放倍数最大值)
scale-value(定义缩放倍数,取值范围为 0.5 - 10)
注意:
movable-area的有个属性scale-area(当里面的movable-view设置为支持双指缩放时,设置此值可将缩放手势生效区域修改为整个movable-area)
示例代码如下:
movable-view区域小于movable-area

  
  

movable-view区域大于movable-area

  
  

可放缩

  
  

测试截图
微信小程序中的View知识点_第3张图片
4:cover-view(覆盖在原生组件之上的文本视图,可覆盖的原生组件包括map、video、canvas、camera、live-player、live-pusher,只支持嵌套cover-view、cover-image,可在cover-view中使用button);cover-image(覆盖在原生组件之上的图片视图,可覆盖的原生组件同cover-view,支持嵌套在cover-view里)
示例代码如下:

测试截图
微信小程序中的View知识点_第4张图片
5:icon(图标)
属性:
type(icon的类型,有效值:success, success_no_circle, info, warn, waiting, cancel, download, search, clear)
size(icon的大小,单位px)
color(icon的颜色,同css的color)
示例代码如下:

  



  



  

数据代码如下:
data: {
    iconSize: [20, 30, 40, 50, 60, 70],
    iconColor: [
      'red', 'orange', 'yellow', 'green', 'rgb(0,255,255)', 'blue', 'purple'
    ],
    iconType: [
      'success', 'success_no_circle', 'info', 'warn', 'waiting', 'cancel', 'download', 'search', 'clear'
    ]
  }
测试截图
微信小程序中的View知识点_第5张图片
6:text(文本)
示例代码如下:
我是文本
7:rich-text(富文本)
示例代码如下:
我是富文本
8:progress(进度条)
属性:
percent(百分比0~100)
show-info(在进度条右侧显示百分比)
stroke-width(进度条线的宽度,单位px)
color(进度条颜色)
active(进度条从左往右的动画)
示例代码如下:




测试截图
微信小程序中的View知识点_第6张图片
9:button(按钮)
属性:
size(按钮的大小,有默认大小default和小尺寸mini)
type(按钮的样式类型,有绿色primary,白色default,红色warn)
plain(按钮是否镂空,背景色透明)
disabled(是否禁用)
loading(名称前是否带 loading 图标)
open-type(微信开放能力,有contact打开客服会话;share触发用户转发;getUserInfo获取用户信息,可以从bindgetuserinfo回调中获取到用户信息;getPhoneNumber获取用户手机号,可以从bindgetphonenumber回调中获取到用户信息;launchApp打开APP,可以通过app-parameter属性设定向APP传的参数;openSetting打开授权设置页;feedback打开“意见反馈”页面,用户可提交反馈内容并上传日志,开发者可以登录小程序管理后台后进入左侧菜单“客服反馈”页面获取到反馈内容)
lang(指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文)
bindgetuserinfo(用户点击该按钮时,会返回获取到的用户信息,回调的detail数据与wx.getUserInfo返回的一致)
示例代码如下:









数据代码如下:
var types = ['default', 'primary', 'warn']
var pageObject = {
  data: {
    defaultSize: 'default',
    primarySize: 'default',
    warnSize: 'default',
    disabled: false,
    plain: false,
    loading: false
  },
  setDisabled: function(e) {
    this.setData({
      disabled: !this.data.disabled
    })
  },
  setPlain: function(e) {
    this.setData({
      plain: !this.data.plain
    })
  },
  setLoading: function(e) {
    this.setData({
      loading: !this.data.loading
    })
  },
  onGotUserInfo: function(e) {
    console.log(e.detail.errMsg)
    console.log(e.detail.userInfo)
    console.log(e.detail.rawData)
  },
}

for (var i = 0; i < types.length; ++i) {
  (function(type) {
    pageObject[type] = function(e) {
      var key = type + 'Size'
      var changedData = {}
      changedData[key] =
        this.data[key] === 'default' ? 'mini' : 'default'
      this.setData(changedData)
    }
  })(types[i])
}

Page(pageObject)
测试截图
微信小程序中的View知识点_第7张图片
10:checkbox-group和checkbox(多选项目)
checkbox-group的属性:
bindchange(中选中项发生改变是触发 change 事件,detail = {value:[选中的checkbox的value的数组]})
checkbox的属性:
value(标识,选中时触发的 change 事件,并携带  的 value)
checked(当前是否选中,可用来设置默认选中)
color(checkbox的颜色)
示例代码如下:

  {{item.value}}

数据代码如下:
Page({
  data: {
    items: [
      { name: 'USA', value: '美国' },
      { name: 'CHN', value: '中国', checked: 'true' },
      { name: 'BRA', value: '巴西' },
      { name: 'JPN', value: '日本' },
      { name: 'ENG', value: '英国' },
      { name: 'TUR', value: '法国' },
    ]
  },
  checkboxChange: function (e) {
    console.log('checkbox发生change事件,携带value值为:', e.detail.value)
  }
})
测试截图
微信小程序中的View知识点_第8张图片
11:form(表单,将组件内的用户输入的 提交)
属性:
bindsubmit(携带 form 中的数据触发 submit 事件,event.detail = {value : {'name': 'value'} , formId: ''})
bindreset(表单重置时会触发 reset 事件)
示例代码如下(注意表单中的其他组件必须得有name属性才能将组件的值进行提交):
switch slider input radio-group radio1 radio2 checkbox-group checkbox1 checkbox2
数据代码如下:
Page({
  formSubmit: function (e) {
    console.log('form发生了submit事件,携带数据为:', e.detail.value)
  },
  formReset: function () {
    console.log('form发生了reset事件')
  }
})
测试截图
微信小程序中的View知识点_第9张图片
12:input(输入框)
属性:
type(input 的类型)
password(是否是密码类型)
placeholder(输入框为空时占位符)
placeholder-style(指定 placeholder 的样式)
focus(获取焦点)
maxlength(最大输入长度,设置为 -1 的时候不限制最大长度)
auto-focus((即将废弃,请直接使用 focus )自动聚焦,拉起键盘)
示例代码如下:




你输入的是:{{inputValue}}







数据代码如下:
Page({
  data: {
    focus: false,
    inputValue: ''
  },
  bindButtonTap: function () {
    this.setData({
      focus: true
    })
  },
  bindKeyInput: function (e) {
    this.setData({
      inputValue: e.detail.value
    })
  },
  bindReplaceInput: function (e) {
    var value = e.detail.value
    var pos = e.detail.cursor
    if (pos != -1) {
      //光标在中间
      var left = e.detail.value.slice(0, pos)
      //计算光标的位置
      pos = left.replace(/11/g, '2').length
    }

    //直接返回对象,可以对输入进行过滤处理,同时可以控制光标的位置
    return {
      value: value.replace(/11/g, '2'),
      cursor: pos
    }
  }
})
测试截图
微信小程序中的View知识点_第10张图片
13:picker(从底部弹起的滚动选择器,现支持五种选择器,通过mode来区分,分别是普通选择器,多列选择器,时间选择器,日期选择器,省市区选择器,默认是普通选择器)
普通选择器:mode = selector
属性:
range(mode为 selector 或 multiSelector 时,range 有效)
value(value 的值表示选择了 range 中的第几个(下标从 0 开始))
bindchange(value 改变时触发 change 事件,event.detail = {value: value})
多列选择器:mode = multiSelector
属性:
range(mode为 selector 或 multiSelector 时,range 有效。二维数组,长度表示多少列,数组的每项表示每列的数据,如[["a","b"], ["c","d"]])
value(value 每一项的值表示选择了 range 对应项中的第几个(下标从 0 开始))
bindchange(value 改变时触发 change 事件,event.detail = {value: value})
bindcolumnchange(某一列的值改变时触发 columnchange 事件,event.detail = {column: column, value: value},column 的值表示改变了第几列(下标从0开始),value 的值表示变更值的下标)
时间选择器:mode = time
属性:
value(表示选中的时间,格式为"hh:mm")
start(表示有效时间范围的开始,字符串格式为"hh:mm")
end(表示有效时间范围的结束,字符串格式为"hh:mm")
bindchange(value 改变时触发 change 事件,event.detail = {value: value}  )
日期选择器:mode = date
属性:
value(表示选中的日期,格式为"YYYY-MM-DD")
start(表示有效日期范围的开始,字符串格式为"YYYY-MM-DD")
end(表示有效日期范围的结束,字符串格式为"YYYY-MM-DD")
bindchange(value 改变时触发 change 事件,event.detail = {value: value})
省市区选择器:mode = region
属性:
value(表示选中的省市区,默认选中每一列的第一个值)
custom-item(可为每一列的顶部添加一个自定义的项)
bindchange(value 改变时触发 change 事件,event.detail = {value: value, code: code, postcode: postcode},其中字段code是统计用区划代码,postcode是邮政编码)
示例代码如下:
普通选择器

  当前选择:{{array[index]}}

多列选择器

  当前选择:{{multiArray[0][multiIndex[0]]}},{{multiArray[1][multiIndex[1]]}},{{multiArray[2][multiIndex[2]]}}

时间选择器

  当前选择: {{time}}

日期选择器

  当前选择: {{date}}

省市区选择器

  当前选择:{{region[0]}},{{region[1]}},{{region[2]}}

数据代码如下:
Page({
  data: {
    array: ['美国', '中国', '巴西', '日本'],
    objectArray: [{
        id: 0,
        name: '美国'
      },
      {
        id: 1,
        name: '中国'
      },
      {
        id: 2,
        name: '巴西'
      },
      {
        id: 3,
        name: '日本'
      }
    ],
    index: 0,
    multiArray: [
      ['无脊柱动物', '脊柱动物'],
      ['扁性动物', '线形动物', '环节动物', '软体动物', '节肢动物'],
      ['猪肉绦虫', '吸血虫']
    ],
    objectMultiArray: [
      [{
          id: 0,
          name: '无脊柱动物'
        },
        {
          id: 1,
          name: '脊柱动物'
        }
      ],
      [{
          id: 0,
          name: '扁性动物'
        },
        {
          id: 1,
          name: '线形动物'
        },
        {
          id: 2,
          name: '环节动物'
        },
        {
          id: 3,
          name: '软体动物'
        },
        {
          id: 3,
          name: '节肢动物'
        }
      ],
      [{
          id: 0,
          name: '猪肉绦虫'
        },
        {
          id: 1,
          name: '吸血虫'
        }
      ]
    ],
    multiIndex: [0, 0, 0],
    date: '2016-09-01',
    time: '12:01',
    region: ['广东省', '广州市', '海珠区'],
    customItem: '全部'
  },
  bindPickerChange: function(e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      index: e.detail.value
    })
  },
  bindMultiPickerChange: function(e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      multiIndex: e.detail.value
    })
  },
  bindMultiPickerColumnChange: function(e) {
    console.log('修改的列为', e.detail.column, ',值为', e.detail.value);
    var data = {
      multiArray: this.data.multiArray,
      multiIndex: this.data.multiIndex
    };
    data.multiIndex[e.detail.column] = e.detail.value;
    switch (e.detail.column) {
      case 0:
        switch (data.multiIndex[0]) {
          case 0:
            data.multiArray[1] = ['扁性动物', '线形动物', '环节动物', '软体动物', '节肢动物'];
            data.multiArray[2] = ['猪肉绦虫', '吸血虫'];
            break;
          case 1:
            data.multiArray[1] = ['鱼', '两栖动物', '爬行动物'];
            data.multiArray[2] = ['鲫鱼', '带鱼'];
            break;
        }
        data.multiIndex[1] = 0;
        data.multiIndex[2] = 0;
        break;
      case 1:
        switch (data.multiIndex[0]) {
          case 0:
            switch (data.multiIndex[1]) {
              case 0:
                data.multiArray[2] = ['猪肉绦虫', '吸血虫'];
                break;
              case 1:
                data.multiArray[2] = ['蛔虫'];
                break;
              case 2:
                data.multiArray[2] = ['蚂蚁', '蚂蟥'];
                break;
              case 3:
                data.multiArray[2] = ['河蚌', '蜗牛', '蛞蝓'];
                break;
              case 4:
                data.multiArray[2] = ['昆虫', '甲壳动物', '蛛形动物', '多足动物'];
                break;
            }
            break;
          case 1:
            switch (data.multiIndex[1]) {
              case 0:
                data.multiArray[2] = ['鲫鱼', '带鱼'];
                break;
              case 1:
                data.multiArray[2] = ['青蛙', '娃娃鱼'];
                break;
              case 2:
                data.multiArray[2] = ['蜥蜴', '龟', '壁虎'];
                break;
            }
            break;
        }
        data.multiIndex[2] = 0;
        console.log(data.multiIndex);
        break;
    }
    this.setData(data);
  },
  bindDateChange: function(e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      date: e.detail.value
    })
  },
  bindTimeChange: function(e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      time: e.detail.value
    })
  },
  bindRegionChange: function(e) {
    console.log('picker发送选择改变,携带值为', e.detail.value)
    this.setData({
      region: e.detail.value
    })
  }
})
测试截图
微信小程序中的View知识点_第11张图片
14:picker-view(嵌入页面的滚动选择器)
属性:
value(数组中的数字依次表示 picker-view 内的 picker-view-column 选择的第几项(下标从 0 开始),数字大于 picker-view-column 可选项长度时,选择最后一项)
indicator-style(设置选择器中间选中框的样式)
bindchange(当滚动选择,value 改变时触发 change 事件,event.detail = {value: value};value为数组,表示 picker-view 内的 picker-view-column 当前选择的是第几项(下标从 0 开始))
示例代码如下:
{{year}}年{{month}}月{{day}}日

  
    {{item}}年
  
  
    {{item}}月
  
  
    {{item}}日
  

数据代码如下:
const date = new Date()
const years = []
const months = []
const days = []

for (let i = 1990; i <= date.getFullYear(); i++) {
  years.push(i)
}

for (let i = 1; i <= 12; i++) {
  months.push(i)
}

for (let i = 1; i <= 31; i++) {
  days.push(i)
}

Page({
  data: {
    years: years,
    year: date.getFullYear(),
    months: months,
    month: 2,
    days: days,
    day: 2,
    value: [9999, 1, 1],
  },
  bindChange: function (e) {
    const val = e.detail.value
    this.setData({
      year: this.data.years[val[0]],
      month: this.data.months[val[1]],
      day: this.data.days[val[2]]
    })
  }
})
测试截图
微信小程序中的View知识点_第12张图片
15:radio(单选项目)
属性:
value( 标识。当该 选中时, 的 change 事件会携带的value)
checked(当前是否选中)
color(radio的颜色)
示例代码如下:

  
    {{item.value}}
  

数据代码如下:
Page({
  data: {
    items: [
      { name: 'USA', value: '美国' },
      { name: 'CHN', value: '中国', checked: 'true' },
      { name: 'BRA', value: '巴西' },
      { name: 'JPN', value: '日本' },
      { name: 'ENG', value: '英国' },
      { name: 'TUR', value: '法国' },
    ]
  },
  radioChange: function (e) {
    console.log('radio发生change事件,携带value值为:', e.detail.value)
  }
})
测试截图
微信小程序中的View知识点_第13张图片
16:slider(滑动选择器)
属性:
min(最小值)
max(最大值)
step(步长,取值必须大于 0,并且可被(max - min)整除)
show-value(是否显示当前 value)
bindchange(完成一次拖动后触发的事件,event.detail = {value: value}   )
示例代码如下:
设置step
 显示当前value
 设置最小/最大值

数据代码如下:
var pageData = {}
for (var i = 1; i < 5; i++) {
  (function (index) {
    pageData['slider' + index + 'change'] = function (e) {
      console.log('slider' + 'index' + '发生 change 事件,携带值为', e.detail.value)
    }
  })(i)
}
Page(pageData)
测试截图
微信小程序中的View知识点_第14张图片
17:switch(开关选择器)
属性:
checked(是否选中)
bindchange(checked 改变时触发 change 事件,event.detail={ value:checked})
示例代码如下:


数据代码如下:
Page({
  switch1Change: function (e) {
    console.log('switch1 发生 change 事件,携带值为', e.detail.value)
  },
  switch2Change: function (e) {
    console.log('switch2 发生 change 事件,携带值为', e.detail.value)
  }
})
测试截图
微信小程序中的View知识点_第15张图片
18:textarea(多行输入框)
属性:
placeholder(输入框为空时占位符)
placeholder-style(指定 placeholder 的样式)
auto-height(是否自动增高,设置auto-height时,style.height不生效)
focus(获取焦点)
auto-focus(自动聚焦,拉起键盘)
bindblur(输入框失去焦点时触发,event.detail = {value, cursor})
示例代码如下: