UNPKG

omi-binding

Version:
128 lines (122 loc) 3.19 kB
import { render, h, define, Component } from "omi/src/omi"; import "../src/index.js"; render( <fieldset> <legend>binding location</legend> <input o-model="location.href" style="width:50rem;"></input> </fieldset>, "body" ); define( "app-main", class extends Component { static css = ` div{ line-height: 1.5; margin: .6rem; } div span{ display:inline-block; margin-right:.2rem; width:10rem; } button{ padding:.5rem; margin:.3rem; } `; data = { name: "lv-saharan", gender: "male", likes: ["tv", "music", "reading"], get likesCount() { return this.likes.length; }, some: { prop1: 123, prop2: true, }, }; //指定绑定的范围 get bindingScope() { return this.data; } showLikes = true; render() { return ( <fieldset> <legend>form binding</legend> <div> <span>name:</span> <input o-model="name" style="width:50rem;" input-pattern="^\D+$"></input> </div> <div> <span>gender:</span> <input o-model="gender" type="radio" value="male" name="gender" ></input> male <input o-model="gender" type="radio" value="female" name="gender" ></input> female </div> <div> <span>likes:</span> {["tv", "game", "reading", "music", "others"].map((l) => ( <label> <input o-model="likes" type="checkbox" value={l} onChange={(evt) => { updateBindings(); }} ></input> {l} </label> ))} </div> <div> <span>likes count</span> <select o-model="likesCount" disabled> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> </div> <div> <span>some</span> prop1:<input type="number" o-model="some.prop1"></input> prop2: <input type="checkbox" o-model="some.prop2"></input> prop3: <input type="checkbox" o-model="some.prop3" o-true-value="Y" o-false-value="N"></input> </div> <button onClick={(evt) => { this.data.name = "sa"; this.updateBindings(); }} > set name to sa and updateBindings </button> <button onClick={(evt) => { alert(JSON.stringify(this.data)); }} > show data </button> </fieldset> ); } } ); render(<app-main />, "body");