业务数据 - Object: data
data对象是流程平台中,流程实例的业务数据,以及内容管理平台中,实例的业务数据,这些数据一般情况下是通过您创建的表单收集而来的,也可以通过脚本创建和增删改查。
data对象基本上是一个JSON对象,您可以用访问JSON对象的方法访问他对象的所有数据,但增加和删除数据时略有不同。
您可以在表单或流程的各个嵌入脚本中,通过this来获取当前实例的业务数据,如下:
1
var data = this.data;
Copied!

业务数据相关操作

[property]

访问或修改data对象的数据。
data数据用于存储表单获取的数据,所有属性都是动态的,其格式和访问方式都和JSON类似。在表单脚本中使用data对象,实现了data和表单可编辑元素的双向绑定。改变data对象,会自动更新表单元素,修改表单可编辑元素,也会自动修改data对象。

Syntax:

Syntax:
1
var value = this.data.property; //获取名为property的数据值
2
this.data.property = '123'; //将property的值修改为'123'
Copied!

Return:

any : 任何数据类型。

Examples 1:

获取流程文档的subject值:
获取流程文档的subject值:
1
var subject = this.data.subject;
Copied!

Examples 2:

获取流程文档中的数据网格的值:
如有以下数据网格:
Could not load image
其数据网格设计如下(数据网格id为:datagrid):
Could not load image
使用下面的脚本:
1
var data = this.data.datagrid;
Copied!
获取到data的值如下:
1
{
2
"data": [
3
{
4
"amountCol": { "amount": "12000" },
5
"countCol": { "number": "10" },
6
"nameCol": { "name": "手机" },
7
"priceCol": { "price": "1200" }
8
},
9
{
10
"amountCol": { "amount": "15000" },
11
"countCol": { "number": "5" },
12
"nameCol": { "name": "电脑" },
13
"priceCol": { "price": "3000" }
14
}
15
],
16
"total": {
17
"amountCol": "27000",
18
"countCol": "15"
19
}
20
}
Copied!
获取到数据网格中的其他数据:
1
//获取数据网格中的第一条数据
2
var data = this.data.datagrid.data[0];
3
4
//获取数据网格中的第一条数据的 nameCol 列的值
5
var data = this.data.datagrid.data[0].nameCol.name;
6
7
//获取数据网格中的 amountCol 列的总计值
8
var data = this.data.datagrid.total.amountCol;
Copied!
修改数据网格中的数据:
1
//修改数据网格中的第一条数据的 nameCol 列的值
2
this.data.datagrid.data[0].nameCol.name='平板电脑';
Copied!
修改后数据网格中的数据为:
Could not load image

add

为data对象添加一个数据节点。

Syntax:

Syntax:
1
var newData = this.data.add(key, value, overwrite);
Copied!

Arguments:

1
> key : (string or number)必选,要添加的新的数据节点名称或数组索引号
2
> value : (string, number, array or JsonObject)必选,新的数据节点的值
3
> overwrite : (boolean)可选,如果要添加的节点已经存在,是否覆盖。默认为 false
Copied!

Return:

1
> any : 新添加的数据节点或原有的同名节点。
Copied!

Examples:

1
//为data添加一个名为"remark"值为"I am remark"的数据
2
this.data.add("remark", "I am remark");
3
//-------------------------------------------------------------------
4
5
//为data添加一个名为"person"的Object对象数据
6
var person = this.data.add("person", {});
7
person.add("name", "Tom");
8
person.add("age", 23);
9
10
//或者可以这样
11
var person = this.data.add("person", {name: "Tom", "age": "23"});
12
//-------------------------------------------------------------------
13
14
//为data添加一个名为"orders"的数组对象数据
15
var orders = this.data.add("orders", []);
16
orders.add({name: "phone", count: 5});
17
orders.add({name: "computer", count: 10});
18
orders[0].add("count", 10, true); //将第一条数据的count修改为10
19
20
//或者可以这样
21
var orders = this.data.add("orders", [
22
{name: "phone", count: 5},
23
{name: "computer", count: 10}
24
]);
25
26
//将第一条数据修改为name为mobile; count为10
27
orders.add(0, {name: "mobile", count: 10}, true);
Copied!

del

删除data对象中一个指定的数据节点。

Syntax:

1
var data = this.data.del(key);
Copied!

Arguments:

1
> key : (string or number)必选,要删除的数据节点名称或数组索引号
Copied!

Return:

1
> data : 被删除数据节点的父节点
Copied!

Examples:

1
//删除data下名为"remark"的数据节点
2
this.data.del("remark");
3
//-------------------------------------------------------------------
4
5
//删除"person"的age数据节点
6
var person = this.data.add.person.del("age");
7
//-------------------------------------------------------------------
8
9
//删除"orders"数组对象中的第二条数据
10
this.data.orders.del(1);
Copied!

save

保存data对象

Syntax:

1
this.data.save(callback);
Copied!

Arguments:

1
> callback : (function)可选,保存成功后的回调函数
Copied!

Return:

1
没有返回值
Copied!

Examples:

1
this.data.save(function(json){
2
this.form.notice("save success!", "success")
3
});
Copied!