Skip to content

Fix/repeat one time#357

Open
rluba wants to merge 4 commits intoaurelia:masterfrom
rluba:fix/repeat_oneTime
Open

Fix/repeat one time#357
rluba wants to merge 4 commits intoaurelia:masterfrom
rluba:fix/repeat_oneTime

Conversation

@rluba
Copy link

@rluba rluba commented Jul 13, 2018

This is a crude attempt at fixing #356.

The fix for the if case was relatively straight-forward. But to disable the fast-pass for the "subview without lifecycle methods" case, I had to rely on instruction.initiatedByBehavior, because I couldn't find a better indicator.

I just started working with Aurelia a few weeks ago, so I’m sure there’s a more elegant way that I couldn’t discover. Let me know what you think!

@bigopon
Copy link
Member

bigopon commented Aug 21, 2018

@rluba @EisenbergEffect

I think all the changes are good except using initiatedByBehavior. By default checking that will also make it false positive for any custom element / custom attribute that doesn't actually require lifecycle. I think we have to introduce new property on If metadata via:

const meta = metada.get(metdata.resource, If);
meta.behaviorRequiresLifecycle = true;

and check:

function behaviorRequiresLifecycle(instruction) {
  let t = instruction.type;
  let name = t.elementName !== null ? t.elementName : t.attributeName;
  return lifecycleOptionalBehaviors.indexOf(name) === -1 && (t.handlesAttached || t.handlesBind || t.handlesCreated || t.handlesDetached || t.handlesUnbind)
    || t.viewFactory && viewsRequireLifecycle(t.viewFactory)
    || instruction.viewFactory && viewsRequireLifecycle(instruction.viewFactory)
    || instruction.type.behaviorRequiresLifecycle;
}

Note: naming is for discussion.

|| t.viewFactory && viewsRequireLifecycle(t.viewFactory)
|| instruction.viewFactory && viewsRequireLifecycle(instruction.viewFactory);
|| instruction.viewFactory && viewsRequireLifecycle(instruction.viewFactory)
|| instruction.initiatedByBehavior;
Copy link
Member

@bigopon bigopon Aug 21, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can not do this, as it includes all custom elements, and custom attributes, thus could possibly make it a breaking change.

@rluba rluba force-pushed the fix/repeat_oneTime branch from db1cdc4 to cd3e953 Compare March 18, 2020 15:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants