magix-components
Version:
102 lines (66 loc) • 3.2 kB
Markdown
> 该组件包含同步界面到数据的同步,校验表单功能
<a href="https://magix-components.github.io/magix-components/#!/mx-form/index" target="_blank">在线示例</a>
| 方法名 | 说明 | 入参 | 返回值 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| isValid | 获取表单项是否全部通过了校验 | void | boolean | |
| fromKeys | 从数据中获取指定key的数据 | data,keys | array | |
> method调用方法: this.isValid(); this.fromKeys(data,'key1,key2');
| 规则名 | 说明 | 类型 |
| -------- | -------- | -------- |
| required | 必须输入 | boolean |
| number | 输入必须是数字 | boolean |
| length | 长度范围校验,如length:[20,50] | array |
| blength | 字符长度范围校验,一个汉字2个字符,如blength:[20,50] | array |
| minLength | 最小长度 | integer |
| maxLength | 最大长度 | integer |
| equalto | 验证是否与另一个值相等,如equalto:'#passwd' 与另外一个节点的值相等 | string |
| pattern | 使用正则来验证 | string |
| max | 数值的最大值 | interger |
| min | 数值的最小值 | interger |
```html
<div class="form-item clearfix">
<label class="form-label form-required">活动名称:</label>
<div class="form-content"><input class="input" placeholder="请填写活动名称" value="<%:name{required:true,blength:[20,50]}%>" /></div>
</div>
```
> 实际开发中,通常一个复杂的表单会拆分成n个子view,子view再拆分来分解复杂的需求。数据传递、获取子view的数据及校验子view通常会比较麻烦,这里展示下这3个功能的实现
```html
<mx-view path="path/to/sub/view" data="<%@ selfData %>"></mx-view>
```
```js
//path/to/sub/view
let Magix = require('magix');
module.exports = Magix.View.extend({
tmpl: '@sub.html',
init(extra) {
this.$data = extra.data;
},
render() {
let me = this;
me.updater.digest();
}
});
```
> 该示例把当前view的updater中的selfData数据传递给子view,子view在init方法中通过data来接收
> 如果想把当前view中的所有数据传递给子view,可以使用this关键字,如
```html
<mx-view path="path/to/sub/view" data="<%@ this %>"></mx-view>
```
> 校验子view时,子view只需要写好绑定的校验规则即可。然后在父view调用this.isValid()方法即可完成所有子view的校验
> 如何校验复杂的规则,比如要对几个数据进行组合校验,那么这个校验的规则统一写在最外层的表单view上。子view仅做根据数据展现和输入数据,不再承担其它功能。
> 仍然通过绑定表达式进行,如
```html
<mx-view path="path/to/sub/view" data="<%@ this %>" <%:name{from:'name'}%> <%:nick{from:'nick'}%>></div>
```
> 该示例表示把子view中的name,nick同步到自身的name,nick上。
> 孙view也是如此,先把子view上的数据同步到自身,然后才可以把自身的数据同步到父view