Package Exports
- ember-destroyable-polyfill
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (ember-destroyable-polyfill) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
ember-destroyable-polyfill
Polyfill for RFC 580 "Destroyables".
Installation
ember install ember-destroyable-polyfillFor addons, pass the -S flag.
Compatibility
- Ember.js v3.4 or above
ember-cli-babelv7.22.1 or above- Ember CLI v2.13 or above
- Node.js v10 or above
Summary
Adds an API for registering destroyables and destructors with Ember's built in destruction hierarchy.
import { registerDestructor } from '@ember/destroyable';
class MyComponent extends Component {
constructor() {
let timeoutId = setTimeout(() => console.log('hello'), 1000);
registerDestructor(this, () => clearTimeout(timeoutId));
}
}The API will also enable users to create and manage their own destroyables, and associate them with a parent destroyable.
import {
associateDestroyableChild,
registerDestructor
} from '@ember/destroyable';
class TimeoutManager {
constructor(parent, fn, timeout = 1000) {
let timeoutId = setTimeout(fn, timeout);
associateDestroyableChild(parent, this);
registerDestructor(this, () => clearTimeout(timeoutId));
}
}
class MyComponent extends Component {
manager = new TimeoutManager(this, () => console.log('hello'));
}For detailed usage instructions, refer to the RFC 580 "Destroyables".
TypeScript Usage
TypeScript's normal type resolution for an import from @ember/destroyable
will not find this the types provided by this package (since TypeScript
would attempt to resolve it as node_modules/@ember/destroyable or under
the Definitely Typed location for @ember/destroyable). Once the
@ember/destroyable API is a documented part of Ember's API, the
Definitely Typed folks will gladly accept adding that API, but in the
meantime users will need to modify their tsconfig.json to tell TypeScript
where these types are.
Add the following to your tsconfig.json:
{
// ...snip...
"paths": {
// ...snip...
"@ember/destroyable": ["node_modules/ember-destroyable-polyfill"],
}
}