Data 对象
由 0x400 发布于
`data` 对象用于存储流程实例或文档实例的业务数据,支持动态属性操作和双向绑定。可通过表单组件或脚本增删改查数据。
## 二、属性访问
### 1. 动态属性
- **类型**:`String | Number | Array | Object`
- **描述**:直接访问或修改 `data` 的属性值(双向绑定)
- **示例**:
```javascript
// 获取属性值
const subject = this.data.subject;
// 修改属性值(需表单存在对应组件)
this.data.subject = "新内容";
// 修改数据网格的值
this.data.datagrid.data[0].nameCol.name = "平板电脑";
```
## 三、静态方法
### 1. add(key, value, overwrite) → `any`
- **描述**:添加数据节点(支持数组、对象等复杂结构)
- **参数**:
- `key`:`String | Number`,属性名或数组索引
- `value`:`any`,属性值
- `overwrite`:`Boolean`(可选),是否覆盖已有属性(默认 `false`)
- **返回值**:新添加的属性值或原有值
- **示例**:
```javascript
// 添加普通属性
this.data.add("remark", "备注信息");
// 添加对象属性
const person = this.data.add("person", { name: "Tom", age: 23 });
// 添加数组属性
const orders = this.data.add("orders", [
{ name: "手机", count: 5 },
{ name: "电脑", count: 10 }
]);
// 修改数组元素(覆盖模式)
orders.add(0, { name: "平板", count: 3 }, true);
```
### 2. save(callback)
- **描述**:保存数据(不触发事件)
- **参数**:
- `callback`:`function`(可选),保存成功回调
- **示例**:
```javascript
this.data.save((json) => {
this.form.notice("保存成功!", "success");
});
```
## 四、数据网格操作
### 1. 结构示例
```javascript
{
data: [
{
amountCol: { amount: "12000" },
countCol: { number: "10" },
nameCol: { name: "手机" },
priceCol: { price: "1200" }
}
],
total: {
amountCol: "27000",
countCol: "15"
}
}
```
### 2. 常用操作
```javascript
// 获取第一条数据
const firstItem = this.data.datagrid.data[0];
// 获取单元格值
const name = firstItem.nameCol.name;
// 修改单元格值
firstItem.priceCol.price = "1500";
// 获取总计值
const totalAmount = this.data.datagrid.total.amountCol;
```
## 五、注意事项
1. **双向绑定**:修改 `data` 会同步更新表单组件,反之亦然。
2. **直接赋值限制**:通过 `this.data.property = value` 赋值时,需确保表单存在对应组件。
3. **复杂数据**:建议使用 `add` 方法处理数组、对象等复杂结构。
4. **保存限制**:避免在 `queryLoad`、`beforeSave`、`afterSave` 中调用 `save()`。
评论