-
Notifications
You must be signed in to change notification settings - Fork 6
Templating Syntax
Templates allow you to define your view markup, data bindings, and event handlers declaratively. A declarative approach means that by default, they are written in an easily parseable, easily translatable format. As technology improves, the templates can be translated into new formats in the future if necessary.
Views should each be defined in their own directory under your project's src directory. So to make a new view, make a new directory under src that is TitleCased, indicating the class name of your view. For example, ToggleButton.
A view file is simply an html file that gets parsed and translated into a TypeScript class. The root element must have a js-type attribute, which defines the classname.
src/ToggleButton/ToggleButton.html:
<div js-type="ToggleButton"></div>
State data is sent to the view as a json object containing name/value pairs that will be mixed into the view's viewModel. For example:
var toggleButton = new ToggleButton();
toggleButton.setData({ isToggled: true });
console.alert(toggleButton.viewModel.isToggled); // alerts 'true'
In your template, you can use the js-bind attribute to indicate a binding of the viewModel state to the effect it has on the view. In the following example, I bind the text value of the button to the viewModel property "name", and the className "toggled" to the viewModel property "isToggled".
<button
js-type="ToggleButton"
js-bind="text:name, className.toggled:isToggled">
</button>