123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- // components/carslider.js
- var app = getApp()
- Component({
- /**
- * 组件的属性列表
- */
- properties: {
- "min":{
- value:0,
- type:Number
- },
- "max":{
- value:100,
- type:Number
- },
- "splitnum":{
- value:"0",
- type:String
- },
- "unit":{
- value:"0",
- type:String
- },
- "splitvalue":{
- value:NaN,
- type:String
- }
- // "step":{
- // value:"",
- // type:String
- // },
- // "value":{
- // value:"",
- // type:String
- // },
- // "activeColor":{
- // value:"",
- // type:String
- // },
- // "backgroundColor":{
- // value:"",
- // type:String
- // },
- // "block-size":{
- // value:"",
- // type:String
- // },
- // "block-color":{
- // value:"",
- // type:String
- // },
- // "show-value":{
- // value:"",
- // type:String
- // }
- },
- /**
- * 组件的初始数据
- */
- data: {
- scale:0,
- gscale:app.globalData.scale
- },
- ready:function(){
- if(this.data.splitnum>0){
- var min = parseInt(this.data.min);
- var space = this.data.max-this.data.min;
- var gap = space/this.data.splitnum;
- var list = [this.data.min];
- for(var i=1;i<=this.data.splitnum;i++){
- list.push(parseInt(this.data.min)+i*gap);
- }
- this.setData({
- list:list,
- value:min+gap*this.data.scale
- });
- }
- },
- /**
- * 组件的方法列表
- */
- methods: {
- touchMove:function(e){
- var obj = this.changeScale(e);
- this.setData(obj);
- this.triggerEvent("changevalue",obj);
- },
- tapToScale:function(e){
- var obj = this.changeScale(e);
- this.setData(obj);
- this.triggerEvent("changeend",obj);
- },
- changeScale:function(e){
- var left = e.touches[0].pageX*this.data.gscale-45;
- var scale = left/660;
- if(scale>1){
- scale=1;
- }else if(scale<0){
- scale=0;
- }
- var space = this.data.max-this.data.min;
- var selectv = space*scale;
- if(this.data.splitvalue){
- selectv = Math.round(selectv/this.data.splitvalue)*this.data.splitvalue;
- }
- scale = selectv/space;
- var value = Math.round(selectv+parseInt(this.data.min));
- var obj = {
- scale:scale,
- value:value
- };
- return obj;
- },
- changeEndScale:function(e){
- var obj = {
- scale:this.data.scale,
- value:this.data.value
- };
- this.triggerEvent("changeend",obj);
- }
- }
- })
|