Created
April 8, 2015 02:38
-
-
Save tobyzerner/da3ddbadbc8c20891bb3 to your computer and use it in GitHub Desktop.
Revisions
-
tobyzerner created this gist
Apr 8, 2015 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,37 @@ import Component from './component'; class Widget extends Component { init(ctrl) { var props = this.props; ctrl.counter = props.initialValue; ctrl.increment = function() { ctrl.counter++; } ctrl.reset = function() { ctrl.counter = props.initialValue; } } view(ctrl) { return m('div', [ m('h1', 'This widget is set up for: '+this.props.name), m('p', 'Counter: '+ctrl.counter), m('button', {onclick: ctrl.increment}, 'Increment Counter') ]) } } class IndexPage extends Component { init(ctrl) { ctrl.widget = new Widget({name: 'foo', initialValue: 2}).instance() } view(ctrl) { return m('div', [ ctrl.widget.render(), m('button', {onclick: ctrl.widget.reset}, 'Reset Counter') ]); } } m.mount(document.body, new IndexPage()); This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,25 @@ export default class Component { constructor(props) { this.props = props || {}; var component = this; this.controller = function() { var ctrl = {}; component.init(ctrl); return ctrl; }; this.controller.$original = this.init; } init(ctrl) { } instance() { var component = this; var controller = new this.controller(); controller.render = function() { return component.view(controller); }; return controller; } }