`const ${setTemplateRefIdent} = ${context.helper('createTemplateRefSetter')}()`,
)
}
+ if (ir.hasDeferredVShow) {
+ push(NEWLINE, `const deferredApplyVShows = []`)
+ }
push(...genBlockContent(ir.block, context, true))
push(INDENT_END, NEWLINE)
const { dynamic, effect, operation, returns, key } = block
const resetBlock = context.enterBlock(block)
- if (block.hasDeferredVShow) {
- push(NEWLINE, `const deferredApplyVShows = []`)
- }
-
if (root) {
for (let name of context.ir.component) {
const id = toValidAssetId(name, 'component')
push(...genOperations(operation, context))
push(...genEffects(effect, context, genEffectsExtraFrag))
- if (block.hasDeferredVShow) {
+ if (root && context.ir.hasDeferredVShow) {
push(NEWLINE, `deferredApplyVShows.forEach(fn => fn())`)
}
effect: IREffect[]
operation: OperationNode[]
returns: number[]
- hasDeferredVShow: boolean
}
export interface RootIRNode {
directive: Set<string>
block: BlockIRNode
hasTemplateRef: boolean
+ hasDeferredVShow: boolean
}
export interface IfIRNode extends BaseIRNode {
directive: new Set(),
block: newBlock(node),
hasTemplateRef: false,
+ hasDeferredVShow: false,
}
const context = new TransformContext(ir, node, options)
operation: [],
returns: [],
tempId: 0,
- hasDeferredVShow: false,
})
export function wrapTemplate(node: ElementNode, dirs: string[]): TemplateNode {
)
if (shouldDeferred) {
- context.parent!.parent!.block.hasDeferredVShow = true
+ context.ir.hasDeferredVShow = true
}
}