Skip to content

Instantly share code, notes, and snippets.

@sukima
Created February 20, 2021 16:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sukima/e8d602e39cc6300480e8827387d30505 to your computer and use it in GitHub Desktop.
Save sukima/e8d602e39cc6300480e8827387d30505 to your computer and use it in GitHub Desktop.
willDestroy called example
import Component from '@glimmer/component';
import { guidFor } from '@ember/object/internals';
export default class extends Component {
willDestroy() {
console.log(`willDestroy on BsTab::TabPane ${guidFor(this)}`);
super.willDestroy(...arguments);
}
}
import Component from '@glimmer/component';
import { guidFor } from '@ember/object/internals';
export default class extends Component {
willDestroy() {
console.log(`willDestroy on BsTab ${guidFor(this)}`);
super.willDestroy(...arguments);
}
}
import Component from '@glimmer/component';
import { guidFor } from '@ember/object/internals';
export default class extends Component {
willDestroy() {
console.log(`willDestroy on CustomComponentA ${guidFor(this)}`);
super.willDestroy(...arguments);
}
}
import Component from '@glimmer/component';
import { guidFor } from '@ember/object/internals';
export default class extends Component {
willDestroy() {
console.log(`willDestroy on CustomComponentB ${guidFor(this)}`);
super.willDestroy(...arguments);
}
}
import Controller from '@ember/controller';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
export default class ApplicationController extends Controller {
@tracked mode = 'A';
get isModeA() {
return this.mode === 'A';
}
@action
toggleMode() {
this.mode = this.isModeA ? 'B' : 'A';
}
}
import { helper } from '@ember/component/helper';
import { guidFor } from '@ember/object/internals';
export default helper(function([context]) {
return guidFor(context);
});
<button type="button" {{on "click" this.toggleMode}}>
Toggle Mode
</button>
{{#if this.isModeA}}
<BsTab @fade={{false}} as |tab|>
<tab.pane @title="Mode A">
<CustomComponentA @active={{this.currentObj}} />
</tab.pane>
</BsTab>
{{else}}
<BsTab @fade={{false}} as |tab|>
<tab.pane @title="Mode B">
<CustomComponentB @active={{this.currentObj}} />
</tab.pane>
</BsTab>
{{/if}}
<h3>Tab Pane {{guid-for this}}</h3>
{{yield}}
<h2>BsTab {{guid-for this}}</h2>
{{yield (hash
pane=(component "bs-tab/tab-pane")
)}}
{
"version": "0.17.1",
"EmberENV": {
"FEATURES": {},
"_TEMPLATE_ONLY_GLIMMER_COMPONENTS": false,
"_APPLICATION_TEMPLATE_WRAPPER": true,
"_JQUERY_INTEGRATION": true
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.js",
"ember": "3.18.1",
"ember-template-compiler": "3.18.1",
"ember-testing": "3.18.1"
},
"addons": {
"@glimmer/component": "1.0.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment