亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序TodoList如何使用

發布時間:2022-03-07 10:58:10 來源:億速云 閱讀:412 作者:iii 欄目:開發技術

這篇文章主要介紹“微信小程序TodoList如何使用”,在日常操作中,相信很多人在微信小程序TodoList如何使用問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”微信小程序TodoList如何使用”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

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

添加todo
儲存在應用緩存
列表展示
區分狀態顯示:全部、未完成、已完成
改變todo狀態
刪除todo

 

1小程序手指縮放圖片開發過程

下載小程序開發工具:開發者工具下載

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

pages/

app.js

app.json

app.wxss

2基本配置

由于平時開發習慣用Less,如果在直接使用小程序的wxss來編寫的話,就恢復原生編寫方式,大大的不便,所以直接使用了gulp來實時編譯Less,和修改文件名為wxss。小程序開發工具是不支持Less,直接用vscode來開發,小程序開發工具是用實時預覽和調試即可,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']); // 實時監控app.less文件變化,運行任務

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

@import "./weui.wxss";

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

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

3頁面開發

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

數據綁定使用 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(), // 取當前時間
      title: this.data.addText,
      status: '0'
    }
    temp.push(addT) // 添加新的todo
    this.showCur(temp) // 處理當前狀態的方法
    this.addTodoHide() // 添加成功后,隱藏添加面板方法
    wx.setStorage({ // 小程序異步緩存
      key:"lists",
      data: temp
    })
    wx.showToast({ // weui toast組件
      title: '添加成功!',
      icon: 'success',
      duration: 1000
    });
 }
 //...
})

列表部分

scroll-view內滾動

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

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

滑動刪除

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

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

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

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

實現方法:

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

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

Page({
 data:{
     //...
 }, 
 //...
  touchS: function (e) {
    // console.log('開始:' + JSON.stringify(e))
    // 是否只有一個觸摸點
    if(e.touches.length === 1){
      this.setData({
        // 觸摸起始的X坐標
        startX: e.touches[0].clientX
      })
    }
  },
  touchM: function (e) {
    // console.log('移動:' + JSON.stringify(e))
    var _this = this
    if(e.touches.length === 1){
     // 觸摸點的X坐標
      var moveX = e.touches[0].clientX
      // 計算手指起始點的X坐標與當前觸摸點的X坐標的差值
      var disX = _this.data.startX - moveX
     // delBtnWidth 為右側按鈕區域的寬度
      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
      // 將拼接好的樣式設置到當前item中
      list[index].txtStyle = txtStyle
      // 更新列表的狀態
      this.setData({
        curLists: list
      });
    }
  },
  touchE: function (e) {
    // console.log('停止:' + JSON.stringify(e))
    var _this = this
    if(e.changedTouches.length === 1){
      // 手指移動結束后觸摸點位置的X坐標
      var endX = e.changedTouches[0].clientX
      // 觸摸開始與結束,手指移動的距離
      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
      // 更新列表的狀態
      _this.setData({
        curLists: list
      });
    }
  }
  //...
})

到此,關于“微信小程序TodoList如何使用”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

津南区| 柳江县| 卫辉市| 恩施市| 公主岭市| 蓝山县| 开江县| 融水| 博湖县| 思茅市| 南康市| 南城县| 读书| 确山县| 英超| 岑巩县| 怀宁县| 新巴尔虎左旗| 额尔古纳市| 泸州市| 大宁县| 长岛县| 吴旗县| 嘉善县| 厦门市| 成武县| 河间市| 行唐县| 东城区| 志丹县| 云安县| 安庆市| 通州市| 星座| 泸水县| 灵台县| 会同县| 莱阳市| 黄大仙区| 夏邑县| 峨眉山市|