我在ServiceNow工作,我正在尝试扩展ootb指令,然后对几个函数进行一些修改。到目前为止,我已经找到了如何扩展指令:
function (spModelDirective){
return angular.extend({}, spModelDirective[0], {
templateUrl:'lbl_custom_template.xml'
});
}
在这个指令中,有一个名为getNestedFields的函数,我想编辑它:
function getNestedFields(fields, containers) {
if (!containers)
return;
for (var _container in containers) {
var container = containers[_container];
if (container.columns) {
for (var _col in container.columns) {
var col = container.columns[_col];
for (var _field in col.fields) {
var field = col.fields[_field];
if (field.type == "container" && container.caption != "")
getNestedFields(fields, [field]);
else if (field.type == "checkbox_container")
getNestedFields(fields, field.containers);
else if (field.type == "field" || container.caption=="")
fields.push(formModel._fields[field.name]);
}
}
}
}
}
有人可以就正确的语法提供一些指导吗?
更多信息
我们的团队克隆了ootb widget-form,并尝试创建自定义布局。基本上,我们希望每个表单部分都是它自己的选项卡,就像后端表单而不是一个长表单,这就是ootb widget-form目前所做的。在sp-variable-layout模板的第一行中,它显示:
<fieldset ng-init="$last ? execItemScripts() : null" ng-show="isContainerVisible(container)" ng-repeat="container in containers">
容器中容器的ng-repeat将每个表单部分视为一个单独的容器(这是完美的),但它也将任何拆分视为一个单独的容器。例如,如果我的表单布局如下所示:
这将创建两个选项卡:一个包含开始和结束分割中的每个字段,另一个选项卡包含结束分割后的所有内容。创建的JSON对象如下所示:
{
"_bootstrap_cells": 6,
"_count": 2,
"visible": true,
"columns": [{
"fields": [{
"name": "type_of_account",
"type": "field"
}, {
"name": "routing_transit_number",
"type": "field"
}]
}, {
"fields": [{
"name": "type_of_payment",
"type": "field"
}, {
"name": "check_digit",
"type": "field"
}]
}],
"caption": "Direct Deposit",
"id": "b456b9d2137ac340177c36328144b0ef",
"scope_name": "x_dnf_table"
}, {
"_bootstrap_cells": 12,
"_count": 1,
"visible": true,
"columns": [{
"fields": [{
"name": "account_number",
"type": "field"
}, {
"name": "account_title",
"type": "field"
}, {
"name": "financial_institution_name",
"type": "field"
}]
}],
"caption": "",
"id": "",
"scope_name": "x_dnf_table"
}
注意第一个&#34;部分&#34;有一个标题,但ServiceNow将拆分部分视为自己的单独部分,根本没有标题。
我想更改spModel指令以仅生成带有标题的容器作为自己的标签,如果容器没有标题,则将其附加到具有标题的上一个容器。
答案 0 :(得分:0)
我认为您无法编辑此功能,因为它作为Servicenow上的文件托管。请参阅https://hi.service-now.com/scripts/app。$ sp / directive.spModel.js然后只需控制-f,以获取getNestedFields。
根据这个帖子; https://community.servicenow.com/thread/247907#1059129我相信spModal只是$ uibModal的包装。
您可以做的是在sp_angular_provider上制作自己的指令。