router-register-plugin
Version:
鸿蒙ZRouter动态路由框架页面模板化插件
129 lines (118 loc) • 3.53 kB
Plain Text
{{#each pageList}}
{{#if isDefaultExport}}
import {{pageName}} from "{{importPath}}";
{{else}}
import { {{pageName}} } from "{{importPath}}";
{{/if}}
{{#if useTemplate}}
import { Lifecycle, LifecycleEvent, LifecycleRegistry, ZRouter } from "{{zRouterPath}}";
{{#if lifecycleObserver}}
{{#if lifecycleObserver.isDefaultExport}}
import {{lifecycleObserver.pageName}} from "{{lifecycleObserver.importPath}}";
{{else}}
import { {{lifecycleObserver.pageName}} } from "{{lifecycleObserver.importPath}}";
{{/if}}
{{/if}}
{{#if attributes}}
{{#if attributes.isDefaultExport}}
import {{attributes.pageName}} from "{{attributes.importPath}}";
{{else}}
import { {{attributes.pageName}} } from "{{attributes.importPath}}";
{{/if}}
{{/if}}
{{/if}}
{{/each}}
{{#each pageList}}
function {{buildFunctionName}}(name: string, param?: ESObject) {
{{#if useTemplate}}
{{pageName}}NavDestView()
{{else}}
{{#if paramStr}}
{{pageName}}({
{{paramStr}}
})
{{else}}
{{pageName}}()
{{/if}}
{{/if}}
}
{{#if useTemplate}}
{{#if useV2}}
{{else}}
{{/if}}
export struct {{pageName}}NavDestView {
lifecycle: LifecycleRegistry = LifecycleRegistry.create(this)
{{#if lifecycleObserver}}
{{#if useV2}}
{{lifecycleObserverAttributeName}}: {{lifecycleObserver.pageName}} = new {{lifecycleObserver.pageName}}()
{{else}}
{{lifecycleObserverAttributeName}}: {{lifecycleObserver.pageName}} = new {{lifecycleObserver.pageName}}()
{{/if}}
{{/if}}
{{#if attributes}}
{{#if useV2}}
private attrModifier: {{attributes.pageName}} = new {{attributes.pageName}}()
{{else}}
attrModifier: {{attributes.pageName}} = new {{attributes.pageName}}()
{{/if}}
{{/if}}
private navDestinationId: string | undefined = ''
aboutToAppear(): void {
{{#if lifecycleObserver}}
this.lifecycle.addObserver(this.{{lifecycleObserverAttributeName}})
{{/if}}
this.lifecycle.addListener((event, router) => {
switch (event) {
case LifecycleEvent.ON_WILL_APPEAR:
this.navDestinationId = router?.navDestinationId
ZRouter.templateMgr().register(this.navDestinationId)
break;
default:
ZRouter.templateMgr().dispatch(this.navDestinationId, event, router)
break;
}
})
}
build() {
NavDestination() {
{{#if useV2}}
{{#if lifecycleObserver}}
{{pageName}}({ {{lifecycleObserverAttributeName}}:this.{{lifecycleObserverAttributeName}} })
{{else}}
{{pageName}}()
{{/if}}
{{else}}
{{pageName}}()
{{/if}}
}
.onReady((context) => {
if (!this.navDestinationId) {
this.navDestinationId = context.navDestinationId
}
{{#if lifecycleObserver}}
this.{{lifecycleObserverAttributeName}}.onReady(context)
{{/if}}
})
.onBackPressed(() => {
const r = ZRouter.templateMgr().dispatch(this.navDestinationId, LifecycleEvent.ON_BACK_PRESS)
let backPressed = false
{{#if lifecycleObserver}}
backPressed = this.{{lifecycleObserverAttributeName}}.onBackPress()
{{/if}}
return backPressed || (typeof r === 'boolean' && r)
})
.hideTitleBar({{hideTitleBar}})
{{#if title}}
.title("{{title}}")
{{/if}}
{{#if attributes}}
.attributeModifier(this.attrModifier)
{{/if}}
}
}
{{/if}}
{{/each}}