我尝试以Camunda Tasklist的嵌入式HTML格式预先选择option
中的select
,但是始终总是先选择第一个选项。
我关注了Binding to a Process Variable:
绑定到过程变量
可以使用
cam-variable-name
指令将选择框绑定到过程变量:<select cam-variable-name="foo" cam-variable-type="String"> <option>bar</option> <option>zar</option> </select>
研究
我也读了CAM-3173:
选择框未显示正确的选项
如果我通过启动表单上的选择框设置了变量的值,则下一个任务表单不会显示在启动表单中选择的选项。它使用相同的选择框。
但是我使用的是Camunda 7.9,自版本7.2.3起,此问题已修复。
HTML
<form>
<select cam-variable-name="variable" cam-variable-type="String">
<option value="option1">option1</option>
<option value="option2">option2</option>
</select>
</form>
结果
option1
被预先选择。在输入用户任务之前,我检查了过程变量,该变量包含option2
。
我错了什么?如果该错误仍然存在,是否有任何解决方法?
答案 0 :(得分:0)
我找到了一种解决方法,请参见Camunda Reference:
实施自定义字段
下面是一个小的用法示例,它结合了到目前为止说明的一些功能。它使用自定义JavaScript与不使用任何
cam-variable-*
指令的表单域实现自定义交互。它显示了如何将自定义脚本用于
- 声明要从后端获取的变量,
- 将变量的值写入表单字段,
- 在提交时读取值。
[...]
以上示例使用jQuery与HTML控件进行交互。如果您使用AngularJS,则还可以在
$scope
回调中填充variables-fetched
,并在$scope
回调中从submit
读取值:
我更改的HTML:
<form>
<script cam-script type="text/form-script">
camForm.on('form-loaded', function() {
camForm.variableManager.fetchVariable('variable');
});
camForm.on('variables-fetched', function() {
$scope.variable = camForm.variableManager.variable('variable');
});
camForm.on('submit', function() {
camForm.variableManager.variableValue('variable', $scope.variable);
});
</script>
<select data-ng-model="variable">
<option value="option1">option1</option>
<option value="option2">option2</option>
</select>
</form>