From d1bb8f9d143808013ed184c3888d242d12e0aae1 Mon Sep 17 00:00:00 2001
From: wkj <278599135@qq.com>
Date: Fri, 23 Dec 2022 11:41:18 +0800
Subject: [PATCH] =?UTF-8?q?features=20navigator=20=20=E5=AF=B9=E5=B0=8F?=
=?UTF-8?q?=E7=A8=8B=E5=BA=8Fnamespace=E7=9A=84=E5=AE=B9=E9=94=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
lib/features/navigator.mp.d.ts | 13 +++++++++++++
lib/features/navigator.mp.js | 22 ++++++++++++++++++++-
lib/page.common.js | 2 +-
src/features/navigator.mp.ts | 35 ++++++++++++++++++++++++++++++++++
src/page.common.ts | 2 +-
5 files changed, 71 insertions(+), 3 deletions(-)
diff --git a/lib/features/navigator.mp.d.ts b/lib/features/navigator.mp.d.ts
index 23fee048..3ae5496a 100644
--- a/lib/features/navigator.mp.d.ts
+++ b/lib/features/navigator.mp.d.ts
@@ -1,8 +1,20 @@
+///
import { Feature } from '../types/Feature';
import { OakNavigateToParameters } from '../types/Page';
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
import { EntityDict } from 'oak-domain/lib/types';
+declare type Location = {
+ pathname: string;
+ state: unknown;
+ key: string;
+};
export declare class Navigator extends Feature {
+ namespace: string;
+ history: WechatMiniprogram.Wx;
+ constructor();
+ setNamespace(namespace: string): void;
+ getLocation(): Location;
+ getNamespace(): string;
private constructUrl;
navigateTo(options: {
url: string;
@@ -12,3 +24,4 @@ export declare class Navigator extends Feature {
} & OakNavigateToParameters, state?: Record): Promise;
navigateBack(delta?: number): Promise;
}
+export {};
diff --git a/lib/features/navigator.mp.js b/lib/features/navigator.mp.js
index bfa7861c..f9c7e21c 100644
--- a/lib/features/navigator.mp.js
+++ b/lib/features/navigator.mp.js
@@ -8,8 +8,28 @@ var Feature_1 = require("../types/Feature");
var Navigator = /** @class */ (function (_super) {
tslib_1.__extends(Navigator, _super);
function Navigator() {
- return _super !== null && _super.apply(this, arguments) || this;
+ var _this = _super.call(this) || this;
+ _this.history = wx;
+ _this.namespace = '';
+ return _this;
}
+ Navigator.prototype.setNamespace = function (namespace) {
+ this.namespace = namespace;
+ };
+ Navigator.prototype.getLocation = function () {
+ var pages = getCurrentPages(); //获取加载的页面
+ var currentPage = pages[pages.length - 1]; //获取当前页面的对象
+ var url = currentPage.route; //当前页面url
+ var options = currentPage.options; //如果要获取url中所带的参数可以查看options
+ return {
+ pathname: url,
+ state: options,
+ key: "".concat(pages.length - 1),
+ };
+ };
+ Navigator.prototype.getNamespace = function () {
+ return this.namespace;
+ };
Navigator.prototype.constructUrl = function (url, state) {
var urlParse = url_1.default.parse(url, true);
var _a = urlParse, pathname = _a.pathname, search = _a.search;
diff --git a/lib/page.common.js b/lib/page.common.js
index 2ba5c92a..a4ee1a16 100644
--- a/lib/page.common.js
+++ b/lib/page.common.js
@@ -141,7 +141,7 @@ function reRender(option, extra) {
var rows = this.features.runningTree.getFreshValue(this.state.oakFullpath);
var oakDirty = this.features.runningTree.isDirty(this.state.oakFullpath);
var oakLoading = !this.pullDownRefresh && this.features.runningTree.isLoading(this.state.oakFullpath);
- var oakPullDownRefreshLoading = this.pullDownRefresh && this.features.runningTree.isLoading(this.state.oakFullpath);
+ var oakPullDownRefreshLoading = !!this.pullDownRefresh && this.features.runningTree.isLoading(this.state.oakFullpath);
var oakLoadingMore = this.features.runningTree.isLoadingMore(this.state.oakFullpath);
var oakExecuting = this.features.runningTree.isExecuting(this.state.oakFullpath);
var oakExecutable = !oakExecuting && this.features.runningTree.tryExecute(this.state.oakFullpath);
diff --git a/src/features/navigator.mp.ts b/src/features/navigator.mp.ts
index 4eb3b362..0b4a7831 100644
--- a/src/features/navigator.mp.ts
+++ b/src/features/navigator.mp.ts
@@ -5,7 +5,42 @@ import { OakNavigateToParameters } from '../types/Page';
import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain';
import { EntityDict } from 'oak-domain/lib/types';
+type Location = {
+ pathname: string;
+ state: unknown;
+ key: string
+};
+
export class Navigator extends Feature {
+ namespace: string;
+ history: WechatMiniprogram.Wx;
+
+ constructor() {
+ super();
+ this.history = wx;
+ this.namespace = '';
+ }
+
+ setNamespace(namespace: string) {
+ this.namespace = namespace;
+ }
+
+ getLocation(): Location {
+ const pages = getCurrentPages(); //获取加载的页面
+ const currentPage = pages[pages.length - 1]; //获取当前页面的对象
+ const url = currentPage.route; //当前页面url
+ const options = currentPage.options; //如果要获取url中所带的参数可以查看options
+ return {
+ pathname: url,
+ state: options,
+ key: `${pages.length - 1}`,
+ };
+ }
+
+ getNamespace() {
+ return this.namespace;
+ }
+
private constructUrl(url: string, state?: Record) {
const urlParse = URL.parse(url, true);
const { pathname, search } = urlParse as {
diff --git a/src/page.common.ts b/src/page.common.ts
index 6221a482..e363d5c9 100644
--- a/src/page.common.ts
+++ b/src/page.common.ts
@@ -144,7 +144,7 @@ export function reRender<
const oakDirty = this.features.runningTree.isDirty(this.state.oakFullpath);
const oakLoading = !(this as any).pullDownRefresh && this.features.runningTree.isLoading(this.state.oakFullpath);
- const oakPullDownRefreshLoading = (this as any).pullDownRefresh && this.features.runningTree.isLoading(this.state.oakFullpath);
+ const oakPullDownRefreshLoading = !!(this as any).pullDownRefresh && this.features.runningTree.isLoading(this.state.oakFullpath);
const oakLoadingMore = this.features.runningTree.isLoadingMore(this.state.oakFullpath);
const oakExecuting = this.features.runningTree.isExecuting(this.state.oakFullpath);
const oakExecutable = !oakExecuting && this.features.runningTree.tryExecute(this.state.oakFullpath);