【Wepy2.x】在onLoad中赋值的问题

本文介绍了在微信小程序开发中遇到的问题,即在onLoad生命周期方法内如何正确获取并设置上个页面传递的数据。当onLoad放置在methods内部时,需要使用setData方法;而当onLoad独立于methods时,可以使用this直接赋值。这个细节对于避免报错和理解小程序的生命周期至关重要。

前几天写代码的时候,想在onLoad里获取上个页面传过来的数据,但是使用this.xxx=xxx直接赋值没有效果,查了一番之后发现要用原生的setData。但是今天在别的页面用同样的写法却报错 this.setData is not a function。两边比较之后发现是onLoad写的位置的问题,整理如下:

1.onLoad写在methods里面

必须用原生

methods:{
	onLoad(option){
		this.setData({
			form:option.data
		})
	}
}

2.onLoad写在methods外面

可以直接this赋值

wepy.page({
	methods:{}
	onLoad(option){
		this.form=option.data
	}
})
<view class=&#39;weui-cell weui-cell_input&#39;> <view class=&#39;weui-cell__hd&#39;> <view class=&#39;weui-label&#39;>前台方向:</view> </view> <view class=&#39;weui-cell__bd&#39;> <input class=&#39;weui-input&#39; disabled=&#39;{{isDisabled}}&#39; placeholder=&#39;请输入前台方向&#39; type=&#39;digit&#39; bindinput=&#39;bindreception&#39; value=&#39;{{shopData.reception}}&#39; /> </view> </view> data = { id: &#39;&#39;, // 修理厂id monopolycode: &#39;&#39;, // 修理厂推荐送修码 showBase: false, // 基础信息 showBusiness: false, // 业务信息 showPatrol: false, // 巡店信息 showPortrait: false, // 画像信息 isDisabled: true, // 是否禁止编辑 默认是true 不可编辑的 shopData: { // 修理厂信息 reception: &#39;南方&#39;, // 前台方向 boss: &#39;&#39;, // 老板名称 workers: 0, //工人数量 policy: &#39;&#39;, // 政策 feedback: &#39;&#39;, // 线团反馈信息 thisWeekRepairShopIssue: { // 本周出单信息 startDate: &#39;&#39;, //开始日期 endDate: &#39;&#39;, //结束日期 remark: &#39;&#39;, //备注日期 issueWeek: 0, //本周出单 shareWeek: 0 //本周份额 }, thisMouthPatrols: [ // 巡店情况 // { // clockDate: &#39;&#39;, // 打开时间 // talk: &#39;&#39;, // 谈判信息 // feedback: &#39;&#39;, // 线团反馈信息 // deviceFlag: &#39;&#39;, // 设备信息采集是否正常 1-是 0-否 // } ] } }; onLoad(options) { console.log(&#39;-----详情页初始参数---&#39;, JSON.stringify(options)); const { id, monopolycode } = options; this.id = id; this.monopolycode = monopolycode; console.log(this.monopolycode, &#39;------初始传输111111----&#39;, this.id); this.$apply(); console.log(this.monopolycode, &#39;------初始传输22222----&#39;, this.id); this.fetchDetailData(); this.$apply(); } fetchDetailData() { console.log(&#39;---调用查详情接口--&#39;); const self = this; if (self.isLoading || self.showNoMore) return; self.isLoading = true; tip.loading(&#39;加载中...&#39;); try { postRequest(Api.repairShop.mgttDetail, { id: this.id, // 修理厂id monopolycode: this.monopolyCode // 推荐送修码 }, function(res) { console.log(&#39;-----------详情返回结果------&#39;, JSON.stringify(res)); tip.loaded(); if (res.code === 0) { console.log(&#39;--------详情返回结果---1&#39;); if (!res.data) { tip.alert(&#39;未获取到修理厂数据&#39;); return; } const newData = res.data.data || {}; self.shopData = newData; self.$apply(); console.log(&#39;-&#39;); } else { tip.alert(res.message || &#39;请求失败&#39;); self.pageNum -= 1; if (self.pageNum < 1) { self.pageNum = 1; } self.$apply(); } }, function() { tip.loaded(); }, false); } catch (error) { tip.alert(&#39;网络连接失败&#39;); } finally { self.isLoading = false; tip.loaded(); self.$apply(); // 更新视图 } } 页面加载是这个方法已经调用了 但是 页面上没有展示返回的数据
最新发布
07-09
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值