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