view 对象
由 0x400 发布于
`view` 对象用于在流程表单、内容管理表单或门户页面中获取视图数据或进行数据选择。通过 `this.view` 访问。
## 二、核心方法
### 1. lookup(view, callback, asyncopt) → `Promise`
- **功能**:获取指定视图的数据。
- **语法**:
```javascript
// 回调方式
this.view.lookup(view, callback, async);
// Promise 方式
const promise = this.view.lookup(view);
promise.then(data => { /* 处理数据 */ });
```
- **参数**:
- `view`(Object,必填):视图配置对象,格式如下:
```javascript
{
"view": "报销审批数据", // 视图名称/别名/ID
"application": "财务管理", // 应用名称/别名/ID
"filter": [ // 过滤条件(可选)
{
"logic": "and", // 逻辑运算符(and/or)
"path": "$work.title", // 字段路径
"comparison": "like", // 比较方式(like/range/eq等)
"value": "7月", // 过滤值
"formatType": "textValue" // 值类型(textValue/numberValue等)
}
]
}
```
- `callback`(Function,可选):成功回调函数。
- `async`(Boolean,可选):是否异步调用,默认 `true`。
- **返回值**:`Promise`,解析后包含:
```javascript
{
grid: Array, // 过滤后的数据(无分类)
groupGrid: Array // 带分类的数据(如果有分类)
}
```
- **示例**:
```javascript
this.view.lookup(
{
view: "报销审批数据",
application: "财务管理",
filter: [{
logic: "and",
path: "$work.title",
comparison: "like",
value: "7月",
formatType: "textValue"
}]
},
(data) => {
const gridData = data.grid;
// 处理数据...
}
);
```
### 2. select(view, callback)
- **功能**:通过视图选择数据并返回结果。
- **语法**:
```javascript
this.view.select(view, callback);
```
- **参数**:
- `view`(Object,必填):视图配置对象,格式如下:
```javascript
{
"view": "物业材料视图", // 视图名称/别名/ID
"application": "物业材料", // 应用名称/别名/ID
"isTitle": true, // 是否显示标题行,默认 `true`
"isMulti": true, // 是否允许多选,默认 `true`
"width": 700, // 弹窗宽度,默认 `700`
"height": 400, // 弹窗高度,默认 `400`
"caption": "选择材料", // 弹窗标题
"filter": [ // 过滤条件(可选)
{
logic: "and",
path: "ylmc",
comparison: "like",
value: "钢材",
formatType: "textValue"
}
]
}
```
- `callback`(Function,必填):选择完成后的回调函数,参数为选中的条目数组。
- **示例**:
```javascript
this.view.select(
{
application: "物业材料",
view: "物业材料视图",
isMulti: false
},
(items) => {
if (items.length) {
this.data.materialName = items[0].data.ylmc; // 物料名称
this.data.price = items[0].data.dj; // 单价
}
}.bind(this)
);
```
## 三、方法对比
| 方法名 | 功能描述 | 适用场景 |
|----------|----------------------------|----------------------------|
| `lookup` | 获取视图数据并返回结果 | 数据查询、批量加载 |
| `select` | 打开弹窗选择数据并返回选中结果 | 用户交互、表单数据填充 |
## 四、注意事项
1. **过滤条件**:`filter` 中的 `path` 需与视图配置的字段一致(如 `$work.title`)。
2. **异步处理**:建议使用 `Promise` 方式处理 `lookup`,避免回调地狱。
3. **上下文绑定**:在 `select` 的回调中使用 `bind(this)` 确保 `this` 指向正确。
4. **权限控制**:确保当前用户有权限访问目标视图和应用。
**提示**:更多视图配置细节请参考 O2OA 视图设计文档。
评论