diff --git a/package.json b/package.json index 7c26066..f9ed77d 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "build": "tsc", "build.docs": "typedoc --out docs --mode file src --theme minimal --readme docs.md --media dist", "clean": "shx rm -rf dist", - "test": "jest ", + "test": "jest", + "test.watch": "jest --watch", "commit": "npx git-cz", "semantic-release": "semantic-release" }, diff --git a/src/bind.spec.ts b/src/bind.spec.ts index d504ced..9fcc279 100644 --- a/src/bind.spec.ts +++ b/src/bind.spec.ts @@ -18,13 +18,35 @@ describe('bind', () => { expect(els[0].innerHTML).toEqual(context.html); expect(els[1].innerHTML).toEqual(context.html); - const update ='updated'; + const update = 'updated'; context.html = update; expect(els[0].innerHTML).toEqual(update); expect(els[1].innerHTML).toEqual(update); }); + it('binds attributes when no context property', () => { + document.documentElement.innerHTML = ` +
+
+ `; + + const context: any = {}; + + bind(document, context); + + const els = document.querySelectorAll('[bind]'); + + expect(els[0].innerHTML).toEqual(''); + expect(els[1].innerHTML).toEqual(''); + + const update = 'update'; + context.title = update; + + expect(els[0].title).toEqual(update); + expect(els[1].title).toEqual(update); + }); + it('binds events', async () => { document.documentElement.innerHTML = '
'; diff --git a/src/bind.ts b/src/bind.ts index cb69fd2..5e9a1cd 100644 --- a/src/bind.ts +++ b/src/bind.ts @@ -41,6 +41,7 @@ export function bind(rootElement: Document | Element, context: any): void { boundFunction(); } else { + let getValue = descriptor.get || (() => descriptor.value); let setValue = descriptor.set || (value => (descriptor.value = value)); @@ -51,7 +52,8 @@ export function bind(rootElement: Document | Element, context: any): void { } if (getValue() !== value) setValue(value); }, - get: getValue + get: getValue, + configurable: true }); component[binding.componentMemberName] = getValue.bind(element)();