UNPKG

weex-nuke

Version:

基于 Rax 、Weex 的高性能组件体系 ~~

175 lines (164 loc) 3.35 kB
# Picker demo * order: 1 * hide: true Lazada demo --- ```js /** @jsx createElement */ import { createElement, Component, render } from 'rax'; import View from 'nuke-view'; import Text from 'nuke-text'; import Page from 'nuke-page'; import Button from 'nuke-button'; import Picker from 'nuke-web-picker'; let data0 = [ { key: 'complex', value: '综合排序' }, { key: 'sale', value: '销量优先' }, { key: 'distance', value: '距离最近' }, { key: 'credit', value: '信用优先' } ]; let data1 = [ { value: '浙江', key: 'zhejiang', children: [ { value: '杭州', key: '310000' }, { value: '宁波', key: '315000' } ] }, { value: '江苏', key: 'jiangsu', children: [ { value: '南京', key: '210000' }, { value: '无锡', key: '214000' }, { value: '镇江', key: '212000' } ] } ]; class NukeDemoIndex extends Component { constructor() { super(); this.state = { data: '', selected: 'distance', cascadeProvince: 'jiangsu', cascadeCity: '210000' }; } press() { Picker.show( { title: 'Please select', dataSource: data0, selectedKey: this.state.selected, hasToolbar: true, hasToolbarButton: true }, result => { this.setState({ data: result[0].value, selected: result[0].key }); }, e => { console.log('canceled'); } ); } cascade() { Picker.show( { title: 'Please select', dataSource: data1, maskClosable: true, buttonStyle: { backgroundColor: 'red', color: 'yellow' }, // hasToolbar:true, // hasToolbarButton:true, hasBottomButton: true, selectedKey: [this.state.cascadeProvince, this.state.cascadeCity], locale: { confirm: 'Done' } }, result => { this.setState({ data: result[0].value + ',' + result[1].value, cascadeProvince: result[0].key, cascadeCity: result[1].key }); }, e => { console.log('canceled'); } ); } render() { return ( <Page title="Picker"> <View style={styles.result}> {this.state.data ? ( <Text style={styles.resultText}>选择了:{this.state.data}</Text> ) : null} </View> <View style={styles.btns}> <Button style={styles.btn} block onPress={this.press.bind(this)} type="primary" > 筛选排序 </Button> <Button style={styles.btn} block onPress={this.cascade.bind(this)} type="primary" > 选择城市 </Button> </View> </Page> ); } } const styles = { result: { height: '480rem', margin: '30rem', padding: '10rem', backgroundColor: '#ffffff', justifyContent: 'center', alignItems: 'center' }, resultText: { fontSize: '28rem' }, btns: { margin: '30rem' }, btn: { marginBottom: '30rem' } }; render(<NukeDemoIndex />); ```