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

列表页比较简单。通过日期查询,然后获得数据进行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();。完美?不知道,起码达到要求了
posted on 2019-06-20 14:20  孤独斗士  阅读(300)  评论(0编辑  收藏  举报