如需针对特定的用户控制界面元素的可见性,您可以使用 visible
属性。如果某个微件与某个用户无关或者该用户不应该使用该微件,您可以对该用户隐藏该微件。例如,在用户更改记录之前,页面不需要保存按钮(用于保存对记录所做的更改)。如果用户没有访问某个页面的权限,您可以隐藏该页面的链接。
主要概念:
visible
属性具有布尔值(true 表示可见,false 表示隐藏)。您可以绑定值或者使用脚本确定用户是否满足可见某个微件的要求。- 请从客户端脚本调用服务器脚本函数(如果可见性条件取决于其他服务器脚本或来自第三方服务的信息)。
- 如果某个微件包含其他微件,则父级微件上的设置适用于其子级。例如,如果您有一个包含标题、输入字段和提交按钮的表单微件,则可以隐藏个别组件或整个表单。
使用脚本控制微件的可见性
编写一个客户端脚本,用于确定用户是否可以访问微件并返回布尔值。例如,差旅审批模板有一个客户端脚本 - Utility。该脚本有三个函数,用于测试用户是否是某个特定角色的成员:
/** * Determines whether the user has specified role. * @param {string} roleName - name of the role to check. * @return {boolean} true if user has the role. */ function hasRole(roleName) { return (app.user.roles.indexOf(roleName) > -1); } /** * Determines whether the user is admin. * @return {boolean} true if user is an admin. */ function isAdmin() { return hasRole('Admins'); } /** * Determines whether the user is approver. * @return {boolean} true if user is an approver. */ function isApprover() { return hasRole('Approvers'); }
hasRole(roleName)
函数获取当前用户所属的角色列表,并搜索指定的角色,看其是否存在。例如,如果某个客户端脚本调用isAdmin()
,则该脚本会搜索 Admins 角色。如果存在 Admins 角色,则该脚本会生成一个索引值(0 或更大的值),并且返回表达式的值为 true。选择您要为其设置可见性的微件。请记住,在层次结构中位于该微件下面的任何微件都会继承父级微件的可见性。
在属性编辑器中,点击 Display。
点击 visible 下拉菜单,然后选择 binding。
在绑定对话框中,输入一个调用客户端脚本的表达式。例如,如需在用户是 Admins 或 Approvers 的成员情况下显示微件,请输入以下表达式:
isAdmin()||isApprover()
使用绑定控制微件的可见性
- 选择您要为其设置可见性的微件。请记住,在层次结构中位于该微件下面的任何微件都会继承父级微件的可见性。
- 在属性编辑器中,点击 Display。
- 点击 visible 下拉菜单,然后选择 binding。
在绑定对话框中,编写一个绑定表达式。例如,如需将访问权限提供给 Managers 角色的成员,请编写以下表达式:
@user.role.Managers
在绑定中使用数字和字符串作为布尔值
您可以将 visible
属性绑定到具有数字值或字符串值(不是日期值)的字段,应用制作工具可以将值自动转换为布尔值。数字和特殊情况(未定义、null、NaN)的转换与 JavaScript 类型转换相匹配。字符串的转换与 JavaScript 类型转换不匹配。
字段类型 | True(可见) | False(隐藏) | 是否与 JavaScript 相同? |
---|---|---|---|
布尔值 | 值:已选中复选框 | 值:已清除复选框 | 是 |
数字 |
|
0、-0、0.0、-0.0 | 是 |
字符串 | “true”、“True”、“TRUE”(任何大小写) |
|
否 |