import style from "antd/lib/input/style/index.css"; class Input { useModules = ["$compile", "esNgAntd"]; props = { value: String, placeholder: String, addonBefore: String, addonAfter: String, disabled: Boolean, onChange: Function, maxLength: Number }; state = { inputEventTarget: null, } constructor(esFormItem, esForm) { esNgAntd.createStyle("ant-input", style); // 上下文 if (esForm) { this.esForm = esForm.getContext(); this.esForm.state.formItems.push($scope); } if (esFormItem) { this.esFormItem = esFormItem.getContext(); } this.props.style = $attrs.style; $element.replaceWith($compile(this.getTemplate())($scope)); } handleClick(event) { this.state.inputEventTarget = event; } handleChange() { this.props.onChange({ event: this.state.inputEventTarget }); } getTemplate() { let maxLengthAttribute = ""; let styleAttribute = ""; let idAttribute = ""; if (this.props.maxLength) { maxLengthAttribute = `maxlength="${this.props.maxLength}"`; } if (this.props.style) { styleAttribute = `style="${this.props.style}"` } if (this.esFormItem && this.esFormItem.name) { idAttribute = `id="${this.esFormItem.name}"`; } let templates = [ ``, ` {{addonBefore}} {{addonAfter}} `, ]; if (this.props.addonBefore || this.props.addonAfter) { return templates[1] } else { return templates[0]; } } }