一级片大奶子_色又黄又爽18禁免费视频_热久久久久久久_久久久精品一区二区_日韩av不卡在线播放_精品国内自产拍在线观看视频

商城系統(tǒng) 注冊

微信小程序TodoList使用教程

2018-04-26|HiShop
導(dǎo)讀:小程序TodoList的使用,下面用簡單的幾個例子來介紹。...

小程序TodoList實戰(zhàn)教程,看完官方的文檔介紹后,就想找個簡單的例子來驗證實現(xiàn)一下,TodoList MVC就很好了,簡單容易。

微信小程序TodoList使用教程

之前都用JQ、Backbone、vue簡單擼過,大概功能如下:

添加todo
儲存在應(yīng)用緩存
列表展示
區(qū)分狀態(tài)顯示:全部、未完成、已完成
改變todo狀態(tài)
刪除todo

 

1小程序手指縮放圖片開發(fā)過程

下載小程序開發(fā)工具:開發(fā)者工具下載

安裝完成后,使用微信掃一掃登錄,選好文件夾后創(chuàng)建即可,開發(fā)工具會自動生成以下目錄:

pages/

app.js

app.json

app.wxss

文錄結(jié)構(gòu)和具體配置查看官方文檔:mp.weixin.qq.com/debug/wxado…

2基本配置

由于平時開發(fā)習(xí)慣用Less,如果在直接使用小程序的wxss來編寫的話,就恢復(fù)原生編寫方式,大大的不便,所以直接使用了gulp來實時編譯Less,和修改文件名為wxss。小程序開發(fā)工具是不支持Less,直接用vscode來開發(fā),小程序開發(fā)工具是用實時預(yù)覽和調(diào)試即可,vscode也有豐富的插件支待小程序語法提示。

// gulpfile.js
var gulp = require('gulp')
var less = require('gulp-less')
var plumber = require('gulp-plumber')
var rename = require('gulp-rename')

gulp.task('less', function () {
  return gulp.src('./app.less')
    .pipe(plumber())  // 錯誤處理
    .pipe(less()) // 編譯less
    .pipe(rename((path) => path.extname = '.wxss')) // 編譯后生成文件修改后綴為.wxss
    .pipe(gulp.dest('./'));
});
gulp.watch('./app.less', ['less']); // 實時監(jiān)控app.less文件變化,運行任務(wù)

UI組件也直接引用了小程序支持的weui-wxss

@import "./weui.wxss";

在app.json定義好小程序頁面路由和配色:

{
  "pages":[
    "pages/index/index"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#ca2100",
    "navigationBarTitleText": "TodoList",
    "navigationBarTextStyle":"white"
  }
}

3頁面開發(fā)

頁面文件都存放在pages/目錄下,每個功能頁面都會創(chuàng)建一個文件夾,TodoList現(xiàn)只需一個頁面完成即可

數(shù)據(jù)綁定使用 Mustache 語法(雙大括號)將變量包起來

{{userInfo.nickName}}

全部

添加todo

使用字段addShow來判斷添加輸入層顯示隱藏即可

input輸出框這里不是雙向綁定,所以這里添加一個事件bindinput="setInput"來賦值實時變化

<view class="addForm {{addShow?'':'hide'}}">
    <view class="addForm-p">
      <input bindinput="setInput" class="weui-input" focus="{{focus}}" placeholder="請輸入todo" value="{{addText}}" />
      <view class="addForm-btn"><button bindtap="addTodo" class="weui-btn mini-btn" size="mini" type="warn">確定添加</button><button bindtap="addTodoHide" class="weui-btn mini-btn" size="mini" type="default">取消</button>
      </view>
    </view>
  </view>

實時賦值事件處理

setInput: function (e) {
    this.setData({
      addText: e.detail.value
    })
}

取消時,需要清空input的值,input里需要綁定value="{{addText}}"

Page({
 data:{
     //...
 }, 
 //...
 addTodoHide: function () {
    this.setData({
      addShow: false, // 控制添加輸入面板隱藏
      focus: false, // 失去焦點
      addText: '' // 清空值
    })
 }
 //...
})

添加todo

Page({
 data:{
     //...
 }, 
 //...
 addTodo: function () {
    // 檢查有沒有輸入
    if (!this.data.addText.trim()) {
      return
    }
    var temp = this.data.lists // 取出lists
    var addT = {
      id: new Date().getTime(), // 取當(dāng)前時間
      title: this.data.addText,
      status: '0'
    }
    temp.push(addT) // 添加新的todo
    this.showCur(temp) // 處理當(dāng)前狀態(tài)的方法
    this.addTodoHide() // 添加成功后,隱藏添加面板方法
    wx.setStorage({ // 小程序異步緩存
      key:"lists",
      data: temp
    })
    wx.showToast({ // weui toast組件
      title: '添加成功!',
      icon: 'success',
      duration: 1000
    });
 }
 //...
})

列表部分

scroll-view內(nèi)滾動

列表渲染,事件觸發(fā),利用data傳參,bind綁定事件


    
    
      暫無數(shù)據(jù)
    
    
    
      
      
        
        
        {{item.title}}
        
        {{api.formatTime(item.id)}}
      
      
      刪除
    
  

滑動刪除

效果:當(dāng)向左滑動時,content跟隨手指像左移動,同時右側(cè)出現(xiàn)del按鈕;當(dāng)滑動距離大于按鈕寬度一半松開手指時自動滑動到左側(cè)顯示出按鈕,小于一半時自動回到原來的位置,隱藏按鈕。

實現(xiàn)思路:content和del按鈕分別是絕對定位,利用z-index層來控制讓content來蓋住del,當(dāng)content向左滑動時,del按鈕就會露出來。

微信小程序api提供的touch對象和3個有關(guān)手指觸摸的函數(shù)(touchstart,touchmove,touchend)來實現(xiàn)content隨手指移動

 

 

詳細(xì)api說明,請查看:mp.weixin.qq.com/debug/wxado…

列表的content已綁定這個三個事件:bindtouchstart="touchS" bindtouchmove="touchM" bindtouchend="touchE"

實現(xiàn)方法:

注意txtStyle,在content在綁定這個屬性的,實現(xiàn)跟隨手指移動的

delBtnWidth為了del按鈕的寬度,這里以rpx為單位

Page({
 data:{
     //...
 }, 
 //...
  touchS: function (e) {
    // console.log('開始:' + JSON.stringify(e))
    // 是否只有一個觸摸點
    if(e.touches.length === 1){
      this.setData({
        // 觸摸起始的X坐標(biāo)
        startX: e.touches[0].clientX
      })
    }
  },
  touchM: function (e) {
    // console.log('移動:' + JSON.stringify(e))
    var _this = this
    if(e.touches.length === 1){
     // 觸摸點的X坐標(biāo)
      var moveX = e.touches[0].clientX
      // 計算手指起始點的X坐標(biāo)與當(dāng)前觸摸點的X坐標(biāo)的差值
      var disX = _this.data.startX - moveX
     // delBtnWidth 為右側(cè)按鈕區(qū)域的寬度
      var delBtnWidth = _this.data.delBtnWidth
      var txtStyle = ''
      if (disX == 0 || disX < 0){ // 如果移動距離小于等于0,文本層位置不變
        txtStyle = 'left:0'
      } else if (disX > 0 ){ // 移動距離大于0,文本層left值等于手指移動距離
        txtStyle = 'left:-' + disX + 'rpx'
        if(disX >= delBtnWidth){
          // 控制手指移動距離最大值為刪除按鈕的寬度
          txtStyle = 'left:-' + delBtnWidth + 'rpx'
        }
      }
      // 獲取手指觸摸的是哪一個item
      var index = e.currentTarget.dataset.index;
      var list = _this.data.curLists
      // 將拼接好的樣式設(shè)置到當(dāng)前item中
      list[index].txtStyle = txtStyle
      // 更新列表的狀態(tài)
      this.setData({
        curLists: list
      });
    }
  },
  touchE: function (e) {
    // console.log('停止:' + JSON.stringify(e))
    var _this = this
    if(e.changedTouches.length === 1){
      // 手指移動結(jié)束后觸摸點位置的X坐標(biāo)
      var endX = e.changedTouches[0].clientX
      // 觸摸開始與結(jié)束,手指移動的距離
      var disX = _this.data.startX - endX
      var delBtnWidth = _this.data.delBtnWidth
      // 如果距離小于刪除按鈕的1/2,不顯示刪除按鈕
      var txtStyle = disX > delBtnWidth/2 ? 'left:-' + delBtnWidth + 'rpx' : 'left:0'
      // 獲取手指觸摸的是哪一項
      var index = e.currentTarget.dataset.index
      var list = _this.data.curLists
      list[index].txtStyle = txtStyle
      // 更新列表的狀態(tài)
      _this.setData({
        curLists: list
      });
    }
  }
  //...
})

 

至此已完成,TodoList實踐例子,功能簡單,入門好例子。

原碼下載:github.com/CH563/TodoL…

電話咨詢 預(yù)約演示 0元開店
主站蜘蛛池模板: 国产一区二区三区片|一区二区视频在线看|欧美=av在线|国产熟妇疯狂4P交在线播放|亚洲精品午夜无码专区|亚洲=aⅴ精品国产首次亮相 | 国产乱人乱精一区二区视频|97性无码区免费|色七七在线|亚洲=aV无码区在线观看东京热|免费看啪啪人=a片=a=a=a片|乱老熟女一区二区三区 | 香蕉成人=av|九九视频这里有精品|美女黄频|99热播精品|日本亚洲欧美|免费=av高清 | 亚洲欧美一|欧美=aⅴ视频|青青草国产免费|黄色毛片久久久久久久久久久|精品久久久久中文字幕日本|一边摸一边做爽的视频17国产有奶水 | 亚洲精品成人|疯狂做受XXXX欧美老人|亚洲精品视频在线观看免费|亚洲一区二区三区在线播放|在线日韩欧美|东京热无码人妻系列综合网站 | 欧美色欧美亚洲日韩在线播放|99久久久久99国产免费=aV|午夜免费片|日韩一区二区三区久久|婷婷色色狠狠爱|69=av在线观看 | 精品久久久久久亚洲综合网站|c=aopeng人人|蜜桃婷婷|国产高潮抽搐在线观看|中文字幕亚洲专区|第四色中文综合网 | 伊人伊成久久人综合网|99久久精品无免国产免费|亚洲精选免费视频|自拍偷拍综合|欧美人禽交zozozo视频|久久久久女人精品毛片九一韩国 | 色综合久久蜜芽国产精品|中国国产精品|国产黄色的视频|风间由美无打码在线观看|欧美日韩国产精品久久久久|最新中文字幕免费视频 | 日本三不卡|17c在线观看|亚洲中文久久精品无码照片|午夜精品久久久久久久96蜜桃|四虎精品成人影院在线观看|国产卡一卡二卡三无线乱码新区 | www.超碰在线.com|日本在线观看无码不卡V|免费观看日本污污ww网站|一区2区|91福利区|国产精品久久久久久238 | 日韩精品免费一区|日本人与黑人做爰视频网站|国产免费黄视频在线观看|亚洲男人天堂一区|69视频在线免费观看|视频三区二区一区 | 久久久久高潮毛片免费全部播放|精品国产一区二区三区久久狼黑人|7878视频在线观看|国产日韩精品视频一区二区三区|#NAME?|91p九色成人 | 丁香五月好婷婷深深爱|欧美、另类亚洲日本一区二区|www.com国产|免费观看又色又爽又湿的视频软件|国产一级生活片|一级黄色故事片 | 大地免费资源|成人综合色区|无码综合天天久久综合网|男人猛躁女人网站|国产午夜福利小视频合集|国产女人与公拘交在线播放 | 99爱在线免费观看|亚洲日韩欧美精品国产|色婷婷偷拍|日本人jizz亚洲人|国产在线线精品宅男网址|午夜内射中出视频 | 中国女人FREEXXXXXXX|一色一伦一区二区三区的区别|亚洲αⅴ无码乱码在线观看性色|怡春院综合|精品人妻无码一区二区三区百度|国产精品wwwwww | 久久www免费视频|久久亚洲高潮流白浆|91视频入囗|#NAME?|亚洲精品无码永久在线观看|欧美黑人一级片 | 搡的我好爽视频免费观看野战|一级黄色国产视频|日本理伦片午夜理伦片|北条麻妃国产九九九精品小说|亚洲97色|亚洲人成伊人成综合无码 | 女明星一级毛片|国产精品成人v=a|久久天天躁狠狠躁夜夜躁2012|久热这里只有精|国产黄大片在线观看|国产成人在线播放视频 | 玖玖热麻豆国产精品图片|91婷婷色|欧美h视频|国产伊人免费|99影视|久久国产日韩欧美 | 国产毛片久久久久久国产毛片|日韩在线免费观看中文字幕|久久sp|91精品国产色综合久久久浪潮|天天躁狠狠躁夜躁2020挡不住|日本=a视频在线观看 久久精品九九热无码免贵|日本=aⅴ精品一区二区三区|亚洲国产精品一区二区成人片|国产精品91久久|久草=av在线播放|亚洲在线www | 任你躁国产自任一区二区三区|日韩成人精品视频在线观看|少妇高潮呻吟=a片免费看软件|国产精品一区二区三区=av|成年免费视频黄网站在线观看|四虎WWW永久在线精品 | 国产最新网站|亚洲美女一区|亚洲V欧美V国产V在线观看|国产精品乱码久久久久久1区2区|大地影视资源在线观看|国产精品扒开腿做爽爽爽日本无码 | 日韩片网站|久久一区二区=av|亚洲精品一区二区三区新线路|尤物tv|懂色中文一区二区三区在线视频|国产乱淫=av公 | 一级国产性感片|国产一区二区三区免费观看网站上|日韩欧美亚洲天堂|亚洲无码在线观看色网视频|亚洲国产午夜精品理论片|天天干伊人 | 国产wwwwwwwwwww|国产视频网站在线|欧美极品一区二区三区|人人爽人人爽|欧美日韩亚洲国产天堂=a|中文字幕欧美专区 | 国产女人的高潮大叫毛片|国产人妻一区二区三区|yw193最新视频|俺たちの熟女纱香60歳|激情成人黄色|久久精品人人做人人综合老师 | 精品久久久蜜桃|天堂亚洲|久久精品女|蜜臀久久精品久久久更新时间|日韩精品一区二区在线播放|九九视频免费在线观看 | 亚洲第一区在线观看|性欧美大战久久久久久久安居码|天天干夜夜春夜夜爽|色视频2|成人爽=a毛片免费啪啪红桃视频|极品少妇小泬50PTHEPON 91成人毛片|#NAME?|亚洲视频1区2区3区4区|国产思思99re99在线观看|激情春色|国产一区二区三区四区在线观看 | 国产日本无码视频韩国网站写真|国产又色又爽又刺激在线播放|亚洲精品456在线播放牛牛影院|久久久亚洲国产|午夜视频成人|国产伦孑沙发午休精品 | 亚洲欧美日韩精品综久久久久久|99热这里只有精品99|国产成人综合精品|无码人妻一区二区三区免费N鬼逝|无码人妻=aⅤ一区二区三区麻豆|69xx×在线观看 | 亚洲精品一二三|一本色道久久综合狠狠躁邻居|国产精品乱码一二三区的特点|国产粉嫩高中无套进入|亚洲欧美日韩愉拍自拍|2017男人天堂手机在线 | 国产精品第一区|亚洲偷偷自拍高清|老熟妇乱子伦=aV|国产激情久久久久久|www.亚洲人|在线观看免费视频 | 日韩成人久久久|农村妇女精品一二区|色站在线|成人=a站|99精品一级欧美片免费播放|品色堂成人论坛 | 美女人妻激情乱人伦|亚洲=aV激情无码专区在线播放|国产在线区|国产v=a免费精品高清在线|天天干天天射综合|九九九九精品 | 日本免费中文字幕|狠狠操综合网|国产一区二区=av在线|国产91精清纯白嫩高中在线观看|少妇特黄V一区二区三区|免费看荫蒂添的好舒服视频 | 日本欧美在线观看|91香蕉在线极品观看|两个人看的www高清视频中文|九九久久影院|偷拍超碰|久久99国产综合精品免费 | 久久撸视频|久久久久亚洲=aV无码专区喷水|国产成人无码精品久久二区三区|少妇扒开粉嫩小泬视频|欧洲黑大粗无码免费|亚洲成人=av | 亚洲第一精品视频在线观看|欧美=a在线观看|免费国产美女爽到喷出水来视频|曰本三级在线|中文无码精品=a∨在线观看|在线观看日本黄色片 | 最近中文字幕高清免费大全1|久久久久国产亚洲|日本free护士videosxxxx|国产日产高清欧美一区二区三区|免费做爰猛烈吃奶摸视频在线观看|日本无遮挡在线观看 |