zoukankan      html  css  js  c++  java
  • 小程序入坑记:TodoList

    小程序数据绑定渲染视图使数据与视图的关系显得很清晰

    wxml:

    <!--pages/todoList/toduList.wxml-->
    <input class='addItem' placeholder-style='font-size:16px;' placeholder='输入事项' bindinput='changeStr' value='{{addStr}}'></input>
    <button class='add' type='primary' bindtap='addTodo'>提交</button>
    <view class='listBox'>
      <view class='listItem' wx:for="{{addList}}" wx:key='item.id'>
        <text class='content'>{{item.content}}</text>
        <text class='time'>{{item.time}}</text>
        <button class='finish' disabled="{{item.finish}}" bindtap='tapHandler' data-id='{{item.id}}'>{{item.finish?'已完成':'完成'}}</button>
        <button class='del' type='warn' bindtap='tapHandler' data-id='{{item.id}}'>删除</button>
      </view>
    </view>

    wxss:

    .addItem {
      position: fixed;
      top: 0;
      left: 0;
       550rpx;
      height: 60rpx;
      background: #ccc;
      padding-left: 30rpx;
      border-radius: 10rpx;
      display: inline-block;
      z-index: 10;
    }
    
    .add {
      position: fixed;
      top: 0;
      right: 0;
      height: 60rpx;
      line-height: 60rpx;
      display: inline-block;
       150rpx;
      font-size: 30rpx;
      z-index: 10;
    }
    
    .content {
      display: inline-block;
      /* background: lightcoral; */
       250rpx;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
      vertical-align: middle;
    }
    
    .time {
      /* background: lightblue; */
      vertical-align: middle;
    }
    
    .listBox {
      margin-top: 60rpx;
    }
    
    .listItem {
      font-size: 14px;
      padding-top: 20rpx;
    }
    
    .del, .finish {
      display: inline-block;
      font-size: 22rpx;
       100rpx;
      height: 60rpx;
      line-height: 60rpx;
      vertical-align: middle;
    }
    

    js:

    // pages/todoList/toduList.js
    Page({
      data: {
        addStr: '', //输入的内容,将该值绑定到input的value中
        addList: [] //事项列表
      },
      changeStr(e) {
        this.setData({
          addStr: e.detail.value //当用户输入值时,修改当前事项内容
        })
      },
      addTodo(e) {
        var str = this.data.addStr.trim() //去除字符前后空格
        if (str.length === 0) {
          return;
        }
        var addList = this.data.addList;
        var date = new Date() //生成提交的时间
        var time = date.toLocaleString(); //转换为标准时间
        var obj = { //每个事项的内容
          id: addList.length, //将id设为数组的长度,方便后续操作
          content: str, //事项内容
          time: time, //提交时间
          finish: false //是否已完成
        }
        addList.push(obj) //将该事项添加到事项列表中
        this.setData({ //刷新列表,置空input内容
          addList,
          addStr: ''
        })
      },
      tapHandler(e) { //用户点击完成或删除时触发
        var addList = this.data.addList
        var id = e.target.dataset.id //获取时间传递的id值
        var type = e._relatedInfo.anchorTargetText //获取点击种类:删除或完成
        for (let i = 0; i < addList.length; i++) { //遍历列表
          if (addList[i].id === id) {
            switch (type) {
              case '完成':
                addList[i].finish = true; //点击完成时执行
                break;
              case '删除':
                addList.splice(i, 1); //点击删除时执行
                break;
              default:
                break;
            }
            this.setData({ //刷新列表
              addList
            })
          }
        }
      }
    })
  • 相关阅读:
    这是一篇通过open live writer发布的博文
    网卡重启失败
    2020年1月目标
    二、安装docker
    JS中的数据类型,包含ES6,set和map等等
    关于prototype和__proto__,最好的一些解释
    JS中call,apply和bind方法的区别和使用场景
    ThinkPHP5生成word文档代码库
    js/jquery操作iframe
    PHP技术--思维导图
  • 原文地址:https://www.cnblogs.com/HelloWorld-Yu/p/12438921.html
Copyright © 2011-2022 走看看