• 列表页 编辑页 删除页


    登录完成了。剩下的就只剩下列表和修改删除了。

    列表页比较简单。通过日期查询,然后获得数据进行wx:for进行展示,很简单,不贴了。修改和删除的时候,用的<button>组件,好吧,遇到了一个麻烦,就是怎么传参数的问题,百度了一下,通过data*进行参数传递,后台直接获得e.

    currentTarget.dataset进行获取,然后用navigatTo进行跳转传递就OK了。贴一下代码:
     update:function(e){
        console.log(e.currentTarget.dataset.updateid)
        wx.navigateTo({
          url: '../update/update?id=' + e.currentTarget.dataset.updateid
        })
      },

    同样,删除的话,不需要跳转,直接进行wx.request将id传到后台,删除就OK了。

    列表页比较简单,就不说了。好吧,头大的来了,修改页:

    <view class="container">
      <view>
      <form bindsubmit="updatesubmit">
        <view>
        <input name='id' hidden='true' value="{{payEdit.id}}"></input>
        <view><text>消费金额</text><input name="name" type="number" maxlength="11" placeholder="请输入金额" value="{{payEdit.SailMoney}}"></input></view>
        <view class='section-title'>消费类型</view>
        <view>
        <picker bindchange='bindPickerChange' name='mypicker' value='{{payEdit.addOrOut}}' range='{{array}}'>
          <view class='picker'>当前选择:{{array[item.addOrOut]}}</view>
        </picker>
        </view>
        <view><text>消费信息</text><input class="flex-1" name="address" type="text" maxlength="11" placeholder="请输入详细信息" value="{{payEdit.SailDetails}}"/></view>
        <view class="delivery-time flex flex-align-center flex-pack-justify">
          <text>消费日期</text>
          <picker id='timePicker' mode="date" value="{{payEdit.SailTime}}" bindchange='changtime'>
          <view class="picker">
              当前选择: {{payEdit.SailTime}}
            </view></picker>
        </view>
        <view class="receipt-true">
          <button class="btn_login" formType="submit" type='primary'>修改</button>
        </view> 
        </view>
      </form>
      </view>
    </view>

    后台通过传递的参数,获得数组列表。这个地方开始头大了,一开始用的是wx:for进行的展示,然后展示没有问题,问题来了,日期那个地方,<picker type='date'>这个值是需要可以修改的,通过bindchange的changtime方法进行,方法比较简单,但是修改就来事了。因为通过wx:fro进行绑定的时候,用的是item.SailTime。怎么去设置item.SailTime的值呢,找资料,查百度,没有任何解决办法。后台提示的就是,该类 undifine。设置 picker的id,设置value同样的undefine。找啊找,寻啊寻。网上介绍picker的资料一大堆,但是结合wx:for的一点资料都没有。怎么办?抽根烟。突然想到,是不是我的思路有问题,不应该用wx:for进行绑定。既然后台传过来的是一个json数组,我直接获得这个数组,进行绑定不就OK了么?试试

     data: {
        array: ['收入', '支出'],
        index: 0,
        payEdit:[],//定义一个edit数组
        datetime: (new Date()).toLocaleDateString()
      },
      onLoad: function (options) {
        console.log(options.id);
        var THIS=this;
        wx.request({
          url: 'http://localhost:62389/' + options.id + '/GetPayDetailById',
          method:'GET',
          header:{'Accept':'application/json'},
          data:{},
          success:function(res){
            THIS.setData({
              payEdit:res.data[0]//将值进行数组赋值
            })
          }
        })
      },

    然后前台通过payEdit进行绑定。世界清净了,完事了。。。。。原来换个思路的问题就是这么简单。耗费了一个多小时的时间。。。。。。。真的是思路决定出路啊~剩下的就很简单了。form表单。wx.request后台交互。完成之后,redirect一下列表页面。OK,结束。

    太天真了。redirect,无法跳转,贴一下代码

      updatesubmit: function (e) {
          wx.request({
            url: 'http://localhost:62389/UpdatePayById',
            contentType:'application/json',
            method:"POST",
            data: { id: e.detail.value.id, sailMoney: e.detail.value.sailMoney, inorout: e.detail.value.mypicker, Details: e.detail.value.Details, timePicker: e.detail.value.timePicker},
            success:function(res){
              if (res.data.status == 0) {
                wx.showToast({
                  title: res.data,
                  icon: 'loading',
                  duration: 1500
                });
              } else {
                wx.showToast({
                  title: res.data,
                  icon: 'success',
                  duration: 1000
                });
                setTimeout(function () {
                wx.redirect({url:'../api/api'})
                }, 1000)
              }
            }
          })
      },

    不跳转,重点说三遍,不跳转。。。。好吧,继续度娘。原来这玩意还分是否带有tabbar .如果要跳转到tabbar页面只能用 switchTab。只有跳转到非tabbar页面才能用redirect这东东。好吧,坑咋就这么多呢?

    试了一下,果然行了,但是跳转之后List页面却不刷新,我想更新之后刷新啊,这咋办,继续度娘。终于,世界清净了,啥也不说了,贴代码

    updatesubmit: function (e) {
          wx.request({
            url: 'http://localhost:62389/UpdatePayById',
            contentType:'application/json',
            method:"POST",
            data: { id: e.detail.value.id, sailMoney: e.detail.value.sailMoney, inorout: e.detail.value.mypicker, Details: e.detail.value.Details, timePicker: e.detail.value.timePicker},
            success:function(res){
              if (res.data.status == 0) {
                wx.showToast({
                  title: res.data,
                  icon: 'loading',
                  duration: 1500
                });
              } else {
                wx.showToast({
                  title: res.data,
                  icon: 'success',
                  duration: 1000
                });
                setTimeout(function () {
                  
                  wx.switchTab({
                    url: '../api/api',
                    success:function(e)
                    {
                      console.log("222")
                      let page =getCurrentPages().pop();
                      if(page == undefined|| page ==null) return;
                      page.onLoad();
                    }
                  })
                }, 1000)
              }
            }
          })
      },

    好吧,这样有个问题,就是onLoad方法里边,必须写入从后台服务器重新查询的数据方法。明明我在List里边的查询按钮里已经有了方法,能不能绑定这个方法呢?就不用再onload一下了。试一下可以。OK。把上面那个page.onLoad()改成

    page.searchPay();。完美?不知道,起码达到要求了
  • 相关阅读:
    中国各省份绘制SVG地图数据
    cookie sessionStorage localStorage 区别
    CSS隐藏元素的几种方法
    15款增强web体验的Javascript库
    HTTP状态码
    IE CSS HACK
    网站性能优化(Yahoo 35条)
    几款超实用的 CSS 开发工具
    Linux 日志切割工具cronolog详解
    linux 文件搜索命令
  • 原文地址:https://www.cnblogs.com/Lonelychampion/p/11058501.html
Copyright © 2020-2023  润新知