vue-inversify-decorator
Version:
PoC of combining vue-class-component and Inversify together
31 lines (30 loc) • 1.11 kB
JavaScript
import { createDecorator } from 'vue-class-component';
var containerKey = '__inversify_container__';
export var Provide = function (container) { return createDecorator(function (options) {
options.mixins = options.mixins || [];
options.mixins.push({
provide: (_a = {},
_a[containerKey] = container,
_a)
});
var _a;
}); };
export var Inject = function (identifier) { return function (proto, key) {
var Type;
if (typeof Reflect !== 'undefined' && typeof Reflect.getMetadata === 'function') {
Type = Reflect.getMetadata('design:type', proto, key);
}
return createDecorator(function (options, key) {
if (!options.__container_injected__) {
options.mixins = options.mixins || [];
options.mixins.push({
inject: [containerKey]
});
options.__container_injected__ = true;
}
options.computed = options.computed || {};
options.computed[key] = function () {
return this[containerKey].get(identifier || Type);
};
})(proto, key);
}; };